尝试单击 <a> 标记时 Selenium 超时

Selenium times out when trying to click <a> tag

我正在尝试使用 selenium 单击一个按钮,它在除 1 个单页和该页中的 1 个单个元素之外的每个页面上都能正常工作。我已经提取它并制作了一个可重现的例子。我已经尝试了所有我能想到的方法,但该项目从未被点击过。我没有运气地观察控制台,如果我手动单击它,它会工作。

这是我的 index.html:

<html>
  <head>
     <title>Test</title>
  </head>
  <body>
    <a id="go" href="javascript:void(0);" class="button_next font_two" onclick="nextStep()">Confirm
    </a>

    <script>
      function nextStep() {
        console.log("moving...")
      }
    </script>
  </body>
</html>

这是我尝试自动化的方法

    nextBtn = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, "go"))
    )

    nextBtn.click()

从上面我得到的错误是超时

我也试过这个

...
nextBtn.send_keys(u'\ue007')
...

还要超时

然后我尝试做一些不同的事情

nextBtn = driver.find_element_by_id("go")
...

这次我得到element not interactable error

我尝试使用 XPATH 代替,但没有成功,我也尝试添加 driver.implicitly_wait(20) 以及在执行此操作之前从页面获取不同的元素,但也没有成功。在这一点上我 运行 没主意了。

你应该尝试这样做,.execute 是执行驱动程序命令,而 .execute_script 是执行 JavaScript 代码。

所以,这样做应该适合您:

javaScript = "document.getElementById('go').click();"
driver.execute_script(javaScript)

# OR Directly calling that function which will be called after click

javaScript ="nextStep()"
driver.execute_script(javaScript)

您可以从 execute and execute_script 了解更多信息 .