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
  • クロームドライバ: 2.29
  • Chromeバージョン:58.0.3029.83(Andro USB経由で接続ID 7.1.1)
  • ホスト・マシン:Ubuntuの14.04.5 LTS
+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 

アラートを終了すると、クロムドライブが正常に動作しているように見えます。

注: Linuxシステムを使用している場合は、代わりにxdotoolを使用できます。

関連する問題