Webアプリケーションでフォルダ構造を作成する作業を自動化するため、右クリックして新しいフォルダを追加できるコンテキストメニューを開く必要があります。Python-Seleniumは連続したループで右クリックを実行できません
folder_path = "Folder A\Folder B\Folder C"
folder_path_list = folder_path.split('\\')
for folder in folder_path_list:
try:
folder = WebDriverWait(browser, 15).until(EC.element_to_be_clickable((By.CSS_SELECTOR,
"div.tree-row.selected + div.tree-children > div > div > a[title='{}']".format(folder))))
folder.click()
time.sleep(5)
except:
parent_folder = WebDriverWait(browser, 8).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.tree-row.selected > a > span.tree-label")))
parent_folder.click()
actionchains.context_click(parent_folder).perform()
add_new_folder_icon = WebDriverWait(browser, 8).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "li.CMicon-add-location")))
add_new_folder_icon.click()
del parent_folder
このコードは、最初の反復中に正常に実行されるが、2回目の反復のための3行目に右クリックを実行するために失敗したループ内でフォルダごとに実行されます。 StaleElementReferenceExceptionエラーをスローします。私は、各ループの最後でparent_folder
変数をクリアするには、ノー成功
- 追加
del
コマンドでは、次の解決方法を試してみました。 - ブラウザのページ全体を更新して、最後に作成したフォルダに再度移動しますが、同じ例外がスローされます。
私が混乱するのは、要素を見つけて左クリックして選択することができても、右クリックを実行するだけで問題に直面するということです。
ブロック以外で試してみることはできますか? '真しばらく: \t試し: \t \t actionchains.context_click(parent_folder).perform() \t \tブレーク \t除く: \t \t印刷( "失敗")' – SAZ
[OK]を私はそれを試してみましたが、それはまだ失敗しました。 – Chandral
@Chandralループにフルコードを追加できますか? –