我有一个针对哪个Chrome驱动程序没有响应的最小示例。
alert.html:
<html>
<body>
<a href="test_alert.html" target="_blank" id="test">Visit Alert test!</a>
</body>
</html>
&#13;
test_alert.html:
<html>
<script type="text/javascript">
alert("Hello world");
</script>
</html>
&#13;
我写了一个基于Python的Selenium脚本来点击链接,然后尝试接受警报。但是,点击链接后,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...."
版本信息:
答案 0 :(得分:0)
事实证明这是一个现有的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
代替。