2016-06-10 7 views
1

Я пытаюсь нажать на «Mr» от drop down list Я пробовал комбинацию вещей, но не из них, похоже, работает.Watir как щелкнуть по вложенному элементу

Я даже пробовал xpath, который обычно является надежным, но для этого случая его неисправность.

$browser.element(:xpath, "/html/body/div[1]/div[1]/div[1]/div/div[2]/div[1]/div[2]/div/div[2]/div/div[2]/div[2]/form/div[2]/div/div[2]/div/div/div/div/div/ul/li[2]/a").click 

click on MR

ответ

1

Ваш xPath позиционен, которая зависит от element позиции .. это не будет работать, если elements являются изменить их положение означает, добавив некоторые elements после каких-либо действий на этой странице.

После просмотра вашего прикрепленного изображения я генерироваться следующим xPath, как показано ниже: -

//ul[contains(@class, 'dropdown-menu')]/descendant::span[contains(.,'Mr')]/parent::a 

Попробуйте с этим xPath .. Может быть, это будет работать ... :)

+0

Спасибо Saurabh, который отлично работал! есть ли какая-либо документация, которую я могу прочитать об этом, у меня есть еще несколько сценариев, где это будет полезно –

+0

@JosephKouroma Да, вы можете перейти по этой ссылке, чтобы понять синтаксис xpath http://www.w3schools.com/xsl /xpath_syntax.asp и для 'xpath axes' http://www.w3schools.com/xsl/xpath_axes.asp –

+0

@JosephKouroma, пожалуйста, не забудьте принять ответ, если это полезно .. :) –

4

XPath предложил Саураой Gaur, можно записать в более удобном для восприятия Watir-подобным образом с помощью:

$browser.ul(class: 'dropdown-menu').link(text: 'Mr').click 

Обратите внимание, что это предполагает, что есть только один ul элемент с классом dropdown-menu. Если их несколько, вам нужно развернуть поиск в конкретном выпадающем списке, используя элемент, который, вероятно, существует выше в DOM.

Однако, учитывая то, скорее всего, только одна ссылка с текстом «Mr», вы, вероятно, может сойти с рук просто:

$browser.link(text: 'Mr').click 

Учитывая связь диалог, который переключается с скрытые видимым, вам может понадобиться также ожидаем:

$browser.link(text: 'Mr').when_present.click 
+0

$ browser.link (текст: 'Mr'). when_present.click работал красиво и для очень чистого кода! –