我想在此代码上单击此按钮,每次更改href时出现问题,因此我无法通过href链接以及我使用的按钮中的文本找到它
driver.find_element_by_xpath("//button[text()='Vérifier Maintenant']").click()
<a href="https://www.majilan-sev.com/finalization&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)
答案 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')]