无法单击元素XPath
本文关键字:XPath 元素 单击 | 更新日期: 2023-09-27 18:29:03
这是我试图达到的元素:
<div class="ui-dialog-buttonpane ui-widget-content ui-helper-clearfix">
<div class="ui-dialog-buttonset">
<button style="background-color: rgb(218, 218, 218);" aria-disabled="false" role="button" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" type="button">
<span style="background-color: transparent;" class="ui-button-text">OK</span>
</button>
</div>
</div>
这是我正在使用的代码:
driver.FindElement(By.XPath("xpath=(//span[contains(@class,'ui-button-text')][contains(text(),'OK')]))")).Click();
我使用xpath使用了SeleniumIDE的查找元素功能,它可以查找元素。
表达式中不需要xpath=
部分:
driver.FindElement(By.XPath("//span[contains(@class,'ui-button-text')][contains(text(),'OK')])")).Click();
此外,我认为您可以停止使用contains()
,并检查完整的class
和text()
值:
driver.FindElement(By.XPath("//span[@class = 'ui-button-text' and . = 'OK'])")).Click();
这里的.
是指元素的文本。
其他解决方案是使用以下xpath:
driver.FindElement(By.XPath("///div[@class='ui-dialog-buttonset']/button/span")).Click();
如果您想要准确的解决方案:你可以使用这个:
driver.FindElement(By.Xpath("//div[@class='ui-dialog-buttonset']/descendant::span[@class='ui-button-text' and contains(text(),'OK')]/parent::button")