重试硒点击

Retry Selenium Click

driver.find_element(By.XPATH, "//input[@name = 'SelectAll' and @value='Move All >>>']").click()
driver.find_element(By.NAME, "Submit1").click()

对于背景,这是转到网站的脚本的一部分,完成一些 actions/prompts,然后提取 CSV 文件。上面的代码大部分时间都有效,但有时会出现

的错误
UnexpectedAlertPresentException: unexpected alert open: {Alert text : No contracts have been selected.}
  (Session info: headless chrome=97.0.4692.99)

这是来自您必须将列表项从一个对话框移到另一个对话框的页面。当没有任何东西被拉过来时,您会收到此错误。另外请注意,我在此代码之前确实有一个 implicitly_wait(100)。

我试图通过一个循环将上面的代码 运行 保存到 repeating/retrying 代码,直到成功。

如果我清楚地了解那里的内容:
您想继续执行您提到的 2 次单击操作,直到没有警报出现。
IE。如果出现警报 - 关闭警报并再次执行点击。
如果没有出现警报 - 不再需要单击这 2 个元素,请继续下一个代码。
如果是这样,您可以这样做:

while True:
    driver.find_element(By.XPATH, "//input[@name = 'SelectAll' and @value='Move All >>>']").click()
    driver.find_element(By.NAME, "Submit1").click()
    try:
        alert = driver.switch_to.alert
        alert.accept()
    except:
        break