我正在自动执行在我们的Web应用程序上创建文件夹结构的任务,它需要右键单击并打开上下文菜单,我可以从中添加新文件夹。
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
变量。让我感到困惑的是,它只会在执行右键单击时遇到问题,即使它能够找到元素并左键单击它并选择它。
答案 0 :(得分:1)
动作链在哪里初始化?尝试重新初始化动作链,然后在except循环中使用它
actionchains = ActionChains(browser)
actionchains.context_click(parent_folder).perform()