2017-06-04 5 views
0

Webdriver Phantonjsでセレンを使用してボタンをクリックしようとすると問題が発生します。私のコードは次のようである:Selenium PhantomJSクラス内のボタンをクリック

from selenium import webdriver 

driver = webdriver.PhantomJS() 
driver.set_window_size(1120, 550) 
driver.get("https://www.instagram.com/nike/") 
dt = driver.find_elements_by_class_name("a_8imhp _glz1g") 

for i in dt: 
    i.click() 

driver.quit() 

とエラーは次のようになります。

File "test.py", line 8, in <module> 
    dt = driver.find_elements_by_class_name("a_8imhp _glz1g") 
    File "/usr/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 427, in find_elements_by_class_name 
    return self.find_elements(by=By.CLASS_NAME, value=name) 
    File "/usr/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 782, in find_elements 
    'value': value})['value'] 
    File "/usr/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 238, in execute 
    self.error_handler.check_response(response) 
    File "/usr/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 193, in check_response 
    raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.WebDriverException: Message: {"errorMessage":"Compound class names not permitted","request":{"headers":{"Accept":"application/json","Accept-Encoding":"identity","Connection":"close","Content-Length":"103","Content-Type":"application/json;charset=UTF-8","Host":"127.0.0.1:41380","User-Agent":"Python-urllib/3.6"},"httpVersion":"1.1","method":"POST","post":"{\"using\": \"class name\", \"value\": \"a_8imhp _glz1g\", \"sessionId\": \"fba6d030-4934-11e7-8712-9506860019f4\"}","url":"/elements","urlParsed":{"anchor":"","query":"","file":"elements","directory":"/","path":"/elements","relative":"/elements","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/elements","queryKey":{},"chunks":["elements"]},"urlOriginal":"/session/fba6d030-4934-11e7-8712-9506860019f4/elements"}} 
Screenshot: available via screen 
+0

この

dt = driver.find_elements_by_class_name("a_8imhp _glz1g") 

を置き換えるあなたはどのボタンをクリックしたしようとしている私たちの更新を検討することはできますか? – DebanjanB

+0

「もっと読み込み」をクリックしようとしましたが、uを下にスクロールすると、Instagramのボタンが表示されます。 –

答えて

1

あなたはfind_elements_by_class_name()に複数のクラス名を渡すことはできません。単一の名前を渡すことができます(例:

driver.find_elements_by_class_name("a_8imhp") 

を使用したり、複雑なセレクタを使用することができます。 XPathまたはCSSセレクタ

ちょうどこの

dt = driver.find_elements_by_css_selector(".a_8imhp._glz1g") 

またはこの

dt = driver.find_elements_by_xpath("//*[@class='a_8imhp _glz1g') 
+0

それは仕事です!アンダーソンさんありがとう! –