繁体   English   中英

python硒单击按钮

[英]python selenium to click a button

硒的新手。 尝试单击下表中的“评论”。 我在下面尝试过解决方案。 它可以工作,但是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]

在此处输入图片说明

由于元素具有多个类,因此应使用:

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

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

a.eiCell.cell.reviews

或XPath以指定包含“评论”文本的SPAN

//span[.='Reviews'][@class='subtle']

两者都应该起作用。 我更喜欢CSS选择器,因为CSS选择器在各种浏览器中都更快,更好地受支持,但是如果不起作用,请尝试XPath。

这是您的问题的答案:

您可以使用下面的代码行单击图表中的“审阅”。

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

让我知道这是否回答了您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM