python selenium点击一个按钮

时间:2017-07-26 00:26:31

标签: python selenium web-scraping

新的硒。 尝试单击下图中的“评论”。 我在下面尝试过解决方案。它有效,但Python点击“评论”后抛出异常。希望有人可以解释为什么Python抛出异常以及如何解决它? 跟踪如下:

Traceback (most recent call last):
  File "C:\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2885, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-19-53ed02f5557e>", line 1, in <module>
    browser.find_element(By.CSS_SELECTOR, "a.eiCell.cell.reviews").click()
  File "C:\Anaconda3\lib\site-packages\selenium\webdriver\remote\webelement.py", line 77, in click
    self._execute(Command.CLICK_ELEMENT)
  File "C:\Anaconda3\lib\site-packages\selenium\webdriver\remote\webelement.py", line 493, in _execute
    return self._parent.execute(command, params)
  File "C:\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 256, in execute
    self.error_handler.check_response(response)
  File "C:\Anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Reached error page: about:neterror?e=dnsNotFound&u=https%3A//.fls.doubleclick.net/activityi%3Bsrc%3D%3Btype%3Dinvmedia%3Bcat%3D%3Bu1%3D3f32e44c-d5d6-4d78-a817-7c9e0dd561a0%3Bord%3D8823339925721%3B%7Eoref%3Dhttps%253A%252F%252Fwww.glassdoor.com%252FReviews%252FGoogle-Reviews-E9079.htm%3F&c=UTF-8&f=regular&d=Firefox%20can%E2%80%99t%20find%20the%20server%20at%20.fls.doubleclick.net.

    # code
    browser = webdriver.Firefox(executable_path=r'C:\Program Files (x86)\Mozilla Firefox\geckodriver.exe')
    url = 'https://www.glassdoor.com/Reviews/index.htm'
    browser.get(url)
    browser.find_element_by_id('KeywordSearch').send_keys('google')
    browser.find_element_by_id('HeroSearchButton').click()
    time.sleep(5)
    # click the review button
    # below code works but throw an exception after clicking "review".
    browser.switch_to_window(browser.window_handles[1]) 
    browser.find_element(By.CSS_SELECTOR, ".eiCell.cell.reviews").click() 

[![enter image description here][1]][1]

enter image description here

3 个答案:

答案 0 :(得分:0)

因为元素有多个类,所以你应该使用:

browser.find_element(By.CSS_SELECTOR, ".eiCell.cell.reviews").click()

答案 1 :(得分:0)

链接文字和部分链接文字的问题在于他们希望文本实际包含在A标记中。在这种情况下,文本包含在SPAN的{​​{1}}标记的子项中,因此它们会失败。类名称的中间案例不起作用,因为您只能指定一个类名,并且您提供了3.在这种情况下,您可以使用CSS选择器指定A标记,如

A

或XPath指定包含“评论”文本的a.eiCell.cell.reviews

SPAN

要么应该工作。我更喜欢CSS选择器,因为CSS选择器在各种浏览器上更快更好地支持但如果它不起作用,请尝试使用XPath。

答案 2 :(得分:0)

以下是您的问题的答案:

您可以使用以下代码行点击&#34;评论&#34;在图表中。

browser.find_element_by_xpath("//a[@class='eiCell cell reviews']//span[@class='subtle']").click()

如果这回答你的问题,请告诉我。