我有一个最小的示例,chrome驱动程序是没有反应的。
alert.html:
<html>
<body>
<a href="test_alert.html" target="_blank" id="test">Visit Alert test!</a>
</body>
</html>
test_alert.html:
<html>
<script type="text/javascript">
alert("Hello world");
</script>
</html>
我写了一个基于Python的硒脚本以单击链接,然后试图接受警报。但是,单击链接后,Chrome驱动程序没有响应。
这是产生此问题的Python脚本:
from selenium import webdriver
import time
SHORT_PAUSE = 5
capabilities = {
'chromeOptions': {
'androidPackage': 'org.chromium.chrome',
}
}
driver = webdriver.Remote('http://localhost:9515', capabilities)
url = "http://10.0.0.173:8888/alert.html"
driver.get(url)
time.sleep(SHORT_PAUSE)
element = driver.find_element_by_id("test")
element.click()
print "done clicking"
# Usually prints: "[u'CDwindow-0', u'CDwindow-1']"
print driver.window_handles
time.sleep(SHORT_PAUSE)
driver.switch_to.window(driver.window_handles[1])
# Selenium is unresponsive after this and
# never prints the below line
print "current url:", driver.current_url
alert = driver.switch_to.alert
print "switched to alert. Text:", alert.text
alert.accept()
print "Accepted modal dialog...."
版本信息:
- python:2.7.6
- 硒:3.4.2
- Chrome驱动程序:2.29
- Chrome版本:58.0.3029.83(在Android 7.1.1上通过USB连接(
- 主机机器:Ubuntu 14.04.5 LTS
事实证明,这是现有的Chromedriver错误:
https://bugs.chromium.org/p/chromedriver/issues/detail?id=833
直到解决问题之前,我的工作是使用adb shell
命令发送键板输入以处理警报,只要我预计一个警报窗口会弹出。
adb shell input keyevent 61 #Tab key for focus
adb shell input keyevent 66 #Enter key to deal with the alert
解散警报后,Chromedriver似乎再次正常工作。
注意:如果您使用的是Linux系统,则可以使用xdotool
。