【问题标题】:Selenium PhantomJS click button inside classSelenium PhantomJS 单击类内的按钮
【发布时间】:2017-06-04 14:52:50
【问题描述】:

当我尝试使用 selenium 和 webdriver Phantonjs 单击按钮时遇到问题。我的代码是这样的:

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

【问题讨论】:

  • 你能考虑更新我们你想点击哪个按钮吗?
  • 我尝试点击“加载更多”,当你向下滚动时,你可以看到 Instagram 上的按钮。

标签: python selenium selenium-webdriver phantomjs


【解决方案1】:

您不能将多个类名传递给find_elements_by_class_name()。您可以尝试传递单个名称,例如

driver.find_elements_by_class_name("a_8imhp")

或使用复杂的选择器,例如XPathCSS 选择器

替换这个

dt = driver.find_elements_by_class_name("a_8imhp _glz1g")

有了这个

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

或者这个

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 2019-06-20
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    相关资源
    最近更新 更多