无法单击元素XPath

时间:2016-01-05 23:19:57

标签: c# selenium xpath

这是我想要达到的元素:

<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使用Selenium IDE的find元素功能,它可以找到元素。

3 个答案:

答案 0 :(得分:3)

表达式中不需要if(!empty($_POST['When'])){ $fields['When__c'] = $_POST['When']; } if(!empty($_POST['AvlToStart'])){ $fields['Available_to_start__c'] = $_POST['AvlToStart']; } 部分:

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(); 引用元素的文本。

答案 1 :(得分:0)

其他解决方案是使用此xpath:

driver.FindElement(By.XPath("///div[@class='ui-dialog-buttonset']/button/span")).Click();

答案 2 :(得分:0)

如果您想要准确的解决方案: 您可以使用此:

driver.FindElement(By.Xpath("//div[@class='ui-dialog-buttonset']/descendant::span[@class='ui-button-text' and contains(text(),'OK')]/parent::button")