Метод Selenium Click не работает на локаторе Xpath - PullRequest
0 голосов
/ 24 октября 2010

Люди,

Мой первый раз на переполнении стека. Надеюсь, вы все можете помочь ...

Я пытаюсь использовать Selenium, чтобы нажать кнопку «Купить сейчас» на html-странице. Вот фрагмент кода HTML:

</div>
    <a href="javascript:void(0)" class="buttonCheckout">Buy Now</a>
    <a href="#" class="buttonSoldout">Sold Out</a>
</div>

Я использовал IDE Selenium, чтобы получить правильный локатор Xpath, но событие click всегда терпит неудачу.

>> chk = "id('yui-gen2')/x:div[3]/x:div/x:a[1]"
=> "id('yui-gen2')/x:div[3]/x:div/x:a[1]"
>> @selenium.get_xpath_count(chk)
=> "1"

>> @selenium.click(chk)
**Error**

>> chk = "xpath = " + chk
=> "xpath = id('yui-gen2')/x:div[3]/x:div/x:a[1]"
>> @selenium.click(chk)
**Error**

The **Error** is:
selenium-client received failure from selenium server:
requested:
 cmd=click
 1=xpath = id('yui-gen2')/x:div[3]/x:div/x:a[1]
 sessionId=d4d6796b3c9749139621cd0cbcde80b2
received:
 "ERROR: Element xpath = id('yui-gen2')/x:div[3]/x:div/x:a[1] not found"
 called from C:/Ruby187/lib/ruby/1.8/timeout.rb:67:in `timeout'
 enium::CommandError: ERROR: Element xpath = id('yui-gen2')/x:div[3]/x:div/x:a[1] not  found

Я попробовал некоторые другие предложения на форуме - @selenium.double_click(chk), @selenium.fire_event(chk, 'click') - но они дают тот же элемент Элемент не найден.

Я также пробовал все виды перестановок из вышеперечисленного, пробовал другие Xpaths (chk = "//a[@class='buttonCheckout']", chk = "/descendant::a[@class='buttonCheckout']", chk = "//a[@href='javascript:void(0)']".

Во всех этих случаях я считаю, что нашел правильный локатор, так как метод get_xpath_count работает, но click всегда дает сбой.

Есть предложения здесь? Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 24 октября 2010

Сообщение об ошибке «Элемент xpath = ... not found» ясно указывает на реальную проблему - поэтому событие двойного щелчка и пожара не поможет.

Вы можете попробовать установить плагин Selenium IDE для Firefox, запуститезапись и нажмите кнопку «Купить сейчас».Selenium IDE автоматически найдет способ найти элемент.Кроме того, обычно в раскрывающемся списке предлагается несколько вариантов локатора.

Кроме того, вы можете попробовать использовать плагины XPather / XPath для поиска и проверки подходящих вариантов локаторов xpath.

0 голосов
/ 25 октября 2010

Это неловко, но я понял ... локатор XPath был в порядке.

Проблема была с пробелами в утверждении:

chk = "xpath = " + chk

Это должно быть:

chk = "xpath=" + chk

И тогда все работает хорошо.

Новички, хах.

Спасибо всем.

...