Как найти текстовое поле в Watir - PullRequest
3 голосов
/ 09 июня 2011

Я пытаюсь получить доступ к сайту с помощью watir-webdriver, но я не могу найти текстовое поле в watir, которое я вижу в Firefox + Firebug.

Мой код

require 'rubygems'
require 'irb/completion'
require 'watir-webdriver'
browser = Watir::Browser.new(:firefox)
browser.goto('http://emersonecologics.com/')
browser.text_field(:name, "txtEmail").set("myemail@gmail.com")

Я получаю сообщение об ошибке:

Watir::Exception::UnknownObjectException: unable to locate element, using {:type=>"(any text type)", :name=>"txtEmail", :tag_name=>"input or textarea"}

Однако я знаю, что есть текстовое поле с именем txtEmail, потому что Firebug показывает мне

<input id="txtEmail" class="textbox" type="text" tabindex="1" name="txtEmail">

Конечно, это текстовое поле глубоковнутри дерева.Поэтому, думая, что мне нужно перейти к нему в DOM, я попытался получить доступ к div, называемому «all».

Если я сделаю

>>browser.divs[1].id
=> "all"
>> browser.divs[1].tag_name
=> "div"

Но когда я попытаюсь получить ручкукажется, что я не могу найти его.

>>browser.div(:id, "all")
=> #<Watir::Div:0x101a8fd70 located=false selector={:tag_name=>"div", :id=>"all"}>

Может кто-нибудь помочь мне, как выбрать объекты на странице?

Ответы [ 2 ]

3 голосов
/ 09 июня 2011

Похоже, что это в рамке для меня тоже

, чтобы избежать путаницы по индексам (особенно учитывая различия в том, как различные варианты Watir основаны на 0 или 1), я бы предложил идентифицировать его по имени. Посмотрите, будет ли это мигать.

browser.frame(:id, "ctrlLoginSSL_ifLogin").text_field(:id, "txtEmail").flash

См. Страницу Watir Wiki на фреймах для получения дополнительной информации о работе с вещами внутри фрейма

P.S.

Примечание (относится к сайту и его использованию фреймов). Вы можете также упомянуть разработчикам сайта, что некоторые браузеры, такие как Chrome, отмечают несоответствие протокола для фрейма (https), не соответствующего внешнему контейнеру ( http) Chrome Developer Tools выпускает следующую жалобу

Небезопасная попытка JavaScript для доступа рамка с URL https://www.emersonecologics.com/User/LoginFrame.aspx?redir=/default.aspx из фрейма с URL http://emersonecologics.com/. Домены, протоколы и порты должны совпадать.

3 голосов
/ 09 июня 2011

Похоже, элемент, к которому вы пытаетесь обратиться, находится внутри фрейма. Мне удалось установить адрес электронной почты с:

browser.frame (: index, 1) .text_field (: name, "txtEmail"). Set ("myemail@gmail.com")

Для получения дополнительной информации: http://wiki.openqa.org/display/WTR/Frames

...