2016-01-05 2 views
0

Это элемент, я пытаюсь достичь:Невозможно щелкнуть элемент 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(); 

Я использовал находку элемент особенность Selenium IDE с использованием xpath, и он может найти элемент.

ответ

3

Вам не нужно xpath= часть внутри выражения:

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

Кроме того, я думаю, что вы можете прекратить использование и проверить полные class и text() значения:

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

Здесь . относится к тексту элемента.

+0

Хотя необходимое предостережение, если класс может содержать больше классов внутри, вы должны будете использовать содержит(). –

0

Другое решение заключается в использовании этого XPath:

driver.FindElement(By.XPath("///div[@class='ui-dialog-buttonset']/button/span")).Click(); 
Смежные вопросы