如何使用webdriver单击此按钮?

时间:2019-04-25 20:15:47

标签: python selenium selenium-webdriver

我想在此代码上单击此按钮,每次更改href时出现问题,因此我无法通过href链接以及我使用的按钮中的文本找到它

driver.find_element_by_xpath("//button[text()='Vérifier Maintenant']").click()
<a href="https://www.majilan-sev.com/finalization&amp;token=a2PrzORvYmkxM0BmbGFzaG1haWwuY28=" target="_blank">
<button style="position: relative;
  display: inline-block;
  padding: 7px 12px;
  border-radius: 4px;
  cursor: pointer;
  font-family: 'Roboto', Arial, sans-serif;
  transition: all .2s;
  font-weight: bold;
  text-transform: uppercase;
  background-color: #3498DB;
  color: white;
  letter-spacing: .2px;
  border: none !important;
  outline: none !important;"type="button"
name="button">Vérifier Maintenant</button>
</a>

这是我得到的错误:

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    driver.find_element_by_xpath("//button[text()='Vérifier Maintenant']").click()
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 394, in find_element_by_xpath
    return self.find_element(by=By.XPATH, value=xpath)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element
    'value': value})['value']
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//button[text()='V\xe9rifier Maintenant']"}
  (Session info: chrome=73.0.3683.103)
  (Driver info: chromedriver=73.0.3683.68 (47787ec04b6e38e22703e856e101e840b65afe72),platform=Windows NT 6.3.9600 x86_64)

3 个答案:

答案 0 :(得分:1)

尝试使用此选择器。

//button[contains(text(),'rifier Maintenant')]

在大多数情况下,尽量不要在选择器中使用特殊字符。

答案 1 :(得分:0)

selenium documentation之后,他们的示例如下:

username = driver.find_element_by_xpath("//input[@name='username']")

所以我想在您的情况下,它看起来像:

driver.find_element_by_xpath("//button[@name='button']").click()

由于名称是“ button”,并且类型也是<button> HTML元素。我相信您会混淆按链接文本搜索的另一种方法。具体地

driver.find_element_by_link_text('some link text')

答案 2 :(得分:0)

如果您的Button名称是唯一的,那么此xpath就足够了:

//button[@name='button']

否则,您可以使用此一个:

//button[@name='button' and contains(text(),'rifier Maintenant')]