我正在自动执行在我们的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
此代码为运行在一个循环的第一次迭代期间,成功执行,但无法执行每个文件夹中的右键单击用于第二次迭代3线。它会抛出一个StaleElementReferenceException错误。我曾尝试没有成功
- 添加了
del
命令如下解决方案在每个循环的结束清除parent_folder
变量。 - 刷新整个浏览器页面并重新导航到我创建的最后一个文件夹,但它会抛出相同的异常。
让我感到困惑的是,即使它能够找到该元素,然后左键单击并选中它,它也只会执行右键单击操作。
你可以尝试在try块中使用它吗? '而真实: \t尝试: \t \t actionchains.context_click(parent_folder).perform() \t \t休息 \t情况除外: \t \t打印( “失败”)' – SAZ
好吧,我试过了,它仍然失败。 – Chandral
@Chandral你可以在循环中添加完整的代码吗? –