2

我有一个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的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...." 

版本信息:

  • 的Python:2.7.6
  • 硒:3.4.2
  • Chrome的驱动程序: 2.29
  • Chrome版本:58.0.3029.83(在Andro上通过USB连接ID 7.1.1)
  • 主机:Ubuntu的LTS 14.04.5
+0

您可能想要包含Python脚本。 – Paul

+0

@Phani你可以考虑分享你的工作吗?谢谢 – DebanjanB

+0

@Paul我已经包含了产生问题的Python脚本。 – Phani

回答

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来代替。