通过XPath点击按钮
我想点击这个按钮:
<div class="ui-dialog-buttonpane ui-widget-content ui-helper-clearfix">
<div class="ui-dialog-buttonset">
<button class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" type="button" role="button" aria-disabled="false">
<span class="ui-button-text">Create</span>
</button>
<button aria-disabled="false" role="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" type="button">
<span class="ui-button-text">Close</span>
</button>
</div>
我想用xpath来实现。这里是我的代码:
driver.find_element_by_xpath("/html/body/div[22]/div[3]/div/button[1]")
我也试过:
driver.find_element_by_xpath(".//div[22]/div[3]/div/button[1]")
但是我总是收到一个错误提示,内容是无法找到元素。我是不是应该换一种定位方式呢?
相关文章:
- 暂无相关问题
3 个回答
1
尝试
点击 关闭
按钮-
driver.find_element_by_xpath("//button[@class='ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only']/following-sibling::span[@class='ui-button-text' and contains(text(),'Close')]").click()
2
这个问题可能有很多原因。没有完整的页面源代码,很难判断到底是什么导致的。以下是几个例子:
按钮是动态加载的吗?如果是这样,可能在Selenium尝试访问这个按钮时,它还没有出现在页面上。你可能需要等到这个元素加载完成。
按钮是在一个iframe里面吗?如果是这样,你需要使用driver.switch_to_frame()切换到正确的框架。想了解如何切换框架,可以查看这个页面。
你是否在动态加载其他元素?因为按钮似乎在div 22里面,这种情况是有可能的。当这些元素加载时,按钮的XPath可能会改变。
总之,如果XPath是正确的,元素已经加载,并且你在查看正确的框架,应该就能找到这个元素。如果你能编辑页面源代码,一个解决方案是给你想点击的按钮添加一个id属性。这样就可以通过ID轻松找到这个元素。你可以在这里找到相关文档。请注意,ID必须是唯一的,以确保你找到的是正确的按钮。这也能解决其他元素动态加载的问题。
3
因为这些按钮的CSS样式是一样的,你可以获取所有的按钮,看看它们的文字内容是否是你想要的,然后点击那个按钮。我不太懂python
,所以请原谅我可能的语法错误。
buttons = driver.find_elements_by_css_selector("button")
for button in buttons:
if button.text.strip() == "Create":
button.click()