名称错误:使用Selenium通过XPATH查找元素时未定义名称“btn”

2024-05-03 02:25:15 发布

您现在位置:Python中文网/ 问答频道 /正文

从chrome元素检查器复制的Xpath和选择器信息:

<button class="btn btn-white btn--no-margin btn--full-width _1XvaFLD3_IpAQNG-OJU2-H _1xNlj_ScH8hEMWzrkRt1A">Sign up</button>

CSS选择器:

^{pr2}$

我试图找到:

button = wd.find_element(By.XPATH("//button[contains(text(),'"+btn-white+"')]"))

返回错误:

NameError: name 'btn' is not defined

我找到了this,它告诉我如何通过部分名称进行查找。在

任何帮助都将不胜感激。在


Tags: nomargin信息元素选择器buttonchromewidth
3条回答

尝试使用:

wd.find_element(By.XPATH("//button[contains(text(),'Sign up')]"))

btn-whitebutton元素中的一个类,而不是文本。你不能用它作为变量,它必须是str参数

button = wd.find_element_by_class_name('btn-white')

或者

^{pr2}$

如果要按Sign up文本定位

button = wd.find_element(By.XPATH, '//button[.="Sign up"]')

此错误消息。。。在

NameError: name 'btn' is not defined

…意味着您试图使用程序中未定义的变量btn。在

根据您提供的HTML:

^{pr2}$

你的代码测试方向是正确的。但是这句话:

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']"))
    

相关问题 更多 >