硒在带有警报的页面上无反应



我有一个最小的示例,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

相关内容

  • 没有找到相关文章

最新更新