从chrome元素检查器复制的Xpath和选择器信息:
<button class="btn btn-white btn--no-margin btn--full-width _1XvaFLD3_IpAQNG-OJU2-H _1xNlj_ScH8hEMWzrkRt1A">Sign up</button>
CssSelector:
#main > div > div.Root__top-container.Root__top-container--has-notice-bar > div.Root__nav-bar.Root__nav-bar--has-notice-bar > nav > div.navBar-signupPrompt._3nonY0buM5Z1AF4aRrP8VY > p:nth-child(1) > button
我试图找到的:
button = wd.find_element(By.XPATH("//button[contains(text(),'"+btn-white+"')]"))
哪个返回错误为:
NameError: name 'btn' is not defined
我发现this向我展示了如何通过部分名称进行查找。
任何帮助将不胜感激。
答案 0 :(得分:1)
btn-white
是button
元素中的类,而不是文本。而且您不能将其用作变量,它必须是str
参数
button = wd.find_element_by_class_name('btn-white')
或
button = wd.find_element(By.CLASS_NAME, 'btn-white')
如果您想按Sign up
文本查找
button = wd.find_element(By.XPATH, '//button[.="Sign up"]')
答案 1 :(得分:-1)
它对您来说更好吗?
button = wd.find_element(By.XPATH("//button[text()='Sign up']"))
答案 2 :(得分:-1)
尝试:
wd.find_element(By.XPATH("//button[contains(text(),'Sign up')]"))
答案 3 :(得分:-1)
此错误消息...
NameError: name 'btn' is not defined
...表示您尝试使用程序中未定义的变量 btn 。
根据您提供的HTML:
<button class="btn btn-white btn--no-margin btn--full-width _1XvaFLD3_IpAQNG-OJU2-H _1xNlj_ScH8hEMWzrkRt1A">Sign up</button>
您的代码试用朝着正确的方向发展。但是表达式:
button = wd.find_element(By.XPATH("//button[contains(text(),'"+btn-white+"')]"))
...表示 btn-white
是一个变量,您可能并不是真的意思,并且在程序中也没有定义。因此,您应该看到以下错误:
NameError: name 'btn-white' is not defined
类似的情况是该错误:
NameError: name 'btn' is not defined
一个有效的解决方案是使用以下Locator Strategies中的任何一个:
xpath :
button = wd.find_element(By.XPATH("//button[contains(@class,'btn-white') and text()='Sign up']"))
xpath :
button = wd.find_element(By.XPATH("//button[contains(@class,'btn--no-margin') and text()='Sign up']"))
xpath :
button = wd.find_element(By.XPATH("//button[contains(@class,'btn--full-width') and text()='Sign up']"))
xpath :
button = wd.find_element(By.XPATH("//button[contains(@class,'btn--full-width') and contains(@class,'btn--no-margin')][text()='Sign up']"))