无法单击元素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

表达式中不需要xpath=部分:

driver.FindElement(By.XPath("//span[contains(@class,'ui-button-text')][contains(text(),'OK')])")).Click();

此外,我认为您可以停止使用contains(),并检查完整的classtext()值:

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