[英]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.