Python 在使用id、xpath、类等单击按钮时遇到问题
我有一个按钮,我正试图点击,需要一些帮助组。这个按钮位于我的wordpress站点的后端/管理区域(我正在尝试将数据批量上传到目录列表系统)。我认为我需要使用button类,因为在同一页上有两个数据id元素具有相同的编号。我已经提供了我的selenium代码(python)尝试以及我试图访问的html。谢谢你的帮助 HTML: 编码方法2:Python 在使用id、xpath、类等单击按钮时遇到问题,python,selenium,button,xpath,webdriver,Python,Selenium,Button,Xpath,Webdriver,我有一个按钮,我正试图点击,需要一些帮助组。这个按钮位于我的wordpress站点的后端/管理区域(我正在尝试将数据批量上传到目录列表系统)。我认为我需要使用button类,因为在同一页上有两个数据id元素具有相同的编号。我已经提供了我的selenium代码(python)尝试以及我试图访问的html。谢谢你的帮助 HTML: 编码方法2: driver.find_element_by_class_name('btn btn-lg btn-primary button select-plan')
driver.find_element_by_class_name('btn btn-lg btn-primary button select-plan').click()
编码方法3:
elements = driver.find_elements_by_class_name("btn btn-lg btn-primary button select-plan")
for e in elements:
e.click()
编码方法4:
driver.find_element_by_xpath('//*[@id="plan"]/div[1]/ul/li/div/div/div[2]/div[2]/a').click()
对于最后一个代码片段(#4),我得到以下错误:
selenium.common.exceptions.WebDriverException: Message: unknown error: Element <a data-id="38579" class="btn btn-lg btn-primary button select-plan">...</a> is not clickable at point (659, 14). Other element would receive the click: <div id="wpadminbar" class="">...</div>
(Session info: chrome=61.0.3163.100)
(Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 10.0.15063 x86_64)
selenium.common.exceptions.WebDriverException:消息:未知错误:元素。。。在点(659,14)处不可单击。其他元素将收到单击:。。。
(会话信息:chrome=61.0.3163.100)
(驱动程序信息:chromedriver=2.33.506120(E3E534376286C0BC2D2DC9AA4915BA81D9023F),平台=Windows NT 10.0.15063 x8664)
试试:
driver.find_element_by_xpath("//div[@class='pkg-button'] [a[text()='Select']]").click()
通过这种方式,您可以使用
class=“pkg button”
选择元素,但不清楚为什么元素不可单击(可能您应该单击div
包装器,而不是a
元素),因此请尝试这些方法,一些方法应该可以奏效)
要单击div
:
//div[@class='pkg-button'][a[text()='Select']]
点击a
标签
//div[@class='pkg-button']/a[text()='Select']
//a[text()='Select']
重要提示:请注意,在方法4中,当id为
wpadminbar
的元素与您的项目重叠时,您会收到错误,因此请在浏览器开发工具中检查此错误,以确保某些div没有与您要单击的元素重叠=)按id查找元素正在搜索唯一的id
属性,非自定义命名属性,如数据id
试试这个:
驱动程序。通过xpath(“//a[@data id='38579']”)查找元素。单击()您可以尝试
直接链接文本,因为它是与文本的链接
find\u element\u by\u link\u text(“选择”)
Css
div.pkg-button>a[data id='38579']
或
div[class='pkg-button']>a[data id='38579']
或者最后是XPATH
//div[@class='pkg-button']/a[text()='Select']
虽然你的尝试无效,因为
elem=driver。按\u id(“38579”)查找\u元素。\u单击()
这不起作用,因为下面没有与“id”属性匹配的元素,“数据id”不同于“id”
驱动程序。通过类名称(“btn btn lg btn主按钮选择计划”)查找元素。单击()。可能有很多元素可用,它可以点击一些你可能不想要的东西
elements=driver.通过类名称查找元素(“btn btn lg btn主按钮选择计划”)
对于元素中的e:
e、 单击()
与上面的第2步类似,在单击您想要的元素之前,某些东西可能会随机失败
driver。通过xpath('/*[@id=“plan”]/div[1]/ul/li/div/div/div/div/div[2]/div[2]/a')查找元素。单击()
这只是一种简单的选择方法,我不希望它起作用。您也不能使用这样的选择器编写selenium脚本,您的自动化将失败
您可能想看看如何使用find_元素按css_选择器。
对于以上内容,请使用浏览器,在感兴趣的html代码的右侧,单击“复制”,然后单击“复制选择器”
在代码的单击事件行上,我收到以下错误:selenium.common.exceptions.WebDriverException:消息:未知错误:元素。。。在点(627,14)处不可单击。其他元素将收到单击:。。。(会话信息:chrome=61.0.3163.100)(驱动程序信息:chromedriver=2.33.506120(e3e534346286c0bc2dc9aa4915ba81d9023f),platform=windowsnt 10.0.15063 x86_64)在没有附加规范的情况下单击pkg按钮是个坏主意,因为它可能不是unique@VitaliyMoskalyuk你是对的。我重新编辑了答案页面上有多个选择按钮(即,它们与列表中的产品包有关)。我使用MRI xpath高亮显示工具(IE的bookmarklet),它使用以下字符串高亮显示所有选择按钮://div[@class='pkg-button']重试编辑。获取:selenium.common.exceptions.WebDriverException:消息:未知错误:元素。。。在点(627,14)处不可单击。其他元素将收到单击:…获取以下内容:selenium.common.exceptions.WebDriverException:消息:未知错误:元素。。。在点(627,14)处不可单击。其他元素将收到单击:…请参阅:我使用了所有3个字符串,使用了“find_element_by_xpath”、“.click()”。错误包括:div字符串:selenium.common.exceptions.NoSuchElementException:Message:没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:“/div[@class='pkg-button'][a[text()='Select']]”标记#1:selenium.common.exceptions.WebDriverException:消息:未知错误:元素。。。在点(627,14)处不可单击。其他元素将收到单击:…标记#2:selenium.common.exceptions.WebDriverException:消息:未知错误:元素。。。在点(627,14)处不可单击。其他元素将收到点击:…我能够用下面提到的代码解决问题。我的问题是,我正在与页面底部的一个对象交互,但我试图单击的按钮位于页面的中间。似乎我想要与之交互的对象必须在脚本交互时在物理上可见。这是真的吗?我认为所有对象都加载到内存中,可以随机访问。请有人对此发表评论。驱动程序。通过xpath('/*[@id=“plan”]/div[1]/ul/li/div/div/div/div[2]/div[2]/a')查找元素。单击()是。在selenium中,元素必须可见且难以处理,否则您将无法完成操作。这更像是模拟用户操作。
driver.find_element_by_xpath("//div[@class='pkg-button'] [a[text()='Select']]").click()
//div[@class='pkg-button'][a[text()='Select']]
//div[@class='pkg-button']/a[text()='Select']
//a[text()='Select']