尝试单击 <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
了解更多信息
.
我正在尝试使用 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
了解更多信息
.