2017-08-22 3 views
3

私はWindows 10マシン、Internet Explorer 11、Python 3.6、IEDriverServer 3.5を使用したセレン3.4.3で動作しています。私は次のコードを使用してIEを開こうとしています。Pythonでセレニウムを使用してIEを開くことができません

from selenium import webdriver 
import os 


driverLocation = "C:\\Users\\JD\\PycharmProjects\\Lib\\IEDriverServer.exe" 
os.environ["webdriver.ie.driver"] = driverLocation 
driver = webdriver.Ie(driverLocation) 
google = "https://google.com" 
driver.get(google) 

出力:

Traceback (most recent call last): 
    File "C:/Users/J/PycharmProjects/AAG_Automation/IE_Test.py", line 7, in <module> 
    driver = webdriver.Ie(driverLocation) 
    File "C:\Users\JD\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\ie\webdriver.py", line 57, in __init__ 
    desired_capabilities=capabilities) 
    File "C:\Users\JD\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 98, in __init__ 
    self.start_session(desired_capabilities, browser_profile) 
    File "C:\Users\JD\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 188, in start_session 
    response = self.execute(Command.NEW_SESSION, parameters) 
    File "C:\Users\JD\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 256, in execute 
    self.error_handler.check_response(response) 
    File "C:\Users\JD\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response 
    raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.WebDriverException: Message: Invalid capabilities in alwaysMatch: unknown capability named platform 

すべてのヘルプは非常に感謝をいただければ幸いです。

UPDATE:私は私の前のコードにこれを追加 、

capabilities = DesiredCapabilities.INTERNETEXPLORER 
print(capabilities["platform"]) 
print(capabilities["browserName"]) 

OUTPUT:

WINDOWS 
internet explorer 
File "C:\Users\JD\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response 
    raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.WebDriverException: Message: Invalid capabilities in alwaysMatch: unknown capability named platform 

UPDATE:私はまた、機能を設定するが、それでも同じエラーを受け取る試してみました :「不明プラットフォーム名

caps = DesiredCapabilities.INTERNETEXPLORER.copy() 
caps["platform"] = "WINDOWS" 
caps["browserName"] = "internet explorer" 
caps["requireWindowFocus"] = True 
browser = webdriver.Ie(capabilities=caps, 
         executable_path="C:\\Users\\JDroetti\\PycharmProjects\\Lib\\IEDriverServer.exe") 
browser.get("https://www.facebook.com/") 

答えて

2

数日間の同じ問題。 このための私の回避策はcapabilities辞書から

例をplatformversionキーを削除しました:

from selenium import webdriver 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 

#create capabilities 
capabilities = DesiredCapabilities.INTERNETEXPLORER 

#delete platform and version keys 
capabilities.pop("platform", None) 
capabilities.pop("version", None) 

#start an instance of IE 
driver = webdriver.Ie(executable_path="C:\\your\\path\\to\\IEDriverServer.exe", capabilities=capabilities) 

driver.get("https://www.google.com/") 

私の推測で、これまでのところ、w3c_capsは右のみの機能として渡されるため、このエラーが起こるということです。あなたは、トレースバックのそれを見ることができます:あなたはそれをクリックしたときに

response = self.execute(Command.NEW_SESSION, parameters)

は、あなたがそれを見ることができます。

w3c_caps["alwaysMatch"].update(capabilities) 

あなたはhere _W3C_CAPABILITY_NAMESたちが渡しているものとは異なる値を保持見ることができるように。 _W3C_CAPABILITY_NAMESは "platformName"を持ち、小文字だけを受け入れますが、 "WINDOWS"は "platform"として渡しています。同じことが "バージョン"キーになります。

認識されない機能を追加しました。

この回避策は決して完璧ではなく、いくつかの機能を削除せずにIEをSelenium Javaで起動することができました。

EDIT:別の解決策は、基本的にあなたが(リモートの\ webdriver.pyから)start_session(self, capabilities, browser_profile=None)から"capabilities": w3c_capsを削除する必要があることを述べているGrimlekコメント、中hereを見つけることができます。コードは次のようになります。

w3c_caps["alwaysMatch"].update(capabilities) 
parameters = {"capabilities": w3c_caps, 
         "desiredCapabilities": capabilities} 

次に、機能からキーを削除する必要はありません。

別の編集:私は3.4.3から3.5.0に変更したSelenium-Pythonを更新したばかりで、機能を使いこなす必要はもうありません。

関連する問題