Watir не работает в форме в кадре

Друзья. Я изучаю рубин, используя watir для тестирования входа на сайт AliExpress.com. Я хотел бы заполнить форму автоматически на https://login.aliexpress.com/, но, к сожалению, для меня. Сайт использует фрейм. Форма имеет HTML-код:

<div id="login-content" class="form clr">
<dl>
<dt class="fm-label">
<div class="fm-label-wrap clr">
<span id="login-id-label-extra" class="fm-label-extra"></span>
<label for="fm-login-id">Account:</label>
</div>
</dt>
<dd id="fm-login-id-wrap" class="fm-field">
<div class="fm-field-wrap">
<div id="account-check-loading" class="loading-mask">
<div class="loading-icon"></div>
<div class="loading-mask-body"></div>
</div>
<input id="fm-login-id" class="fm-text" autocapitalize="off" autocorrect="off" autocomplete="off" value="" placeholder="Email address or member ID" tabindex="1" name="loginId">
</div>

мой код: (ruby 2.1.5-p273, IE11)

require 'watir'
b = Watir::Browser.new
b.goto "https://login.aliexpress.com"
b.div(id:"expressbuyerlogin", class:"iframe-show").exist? # => true
b.text_field(:name, "loginId").set "xxxxxxx@xxx.xx" # => Watir::Exception::UnknownObjectException: Unable to locate element, using {:tag_name=>["text", "password", "textarea"], :name=>"loginId"}
b.text_field(:name, "password").set "xxxxxxxxxxx" # => Watir::Exception::UnknownObjectException: Unable to locate element, using {:tag_name=>["text", "password", "textarea"], :name=>"password"}

Есть идеи? Благодарю.

2 ответа

Решение

Кадры обрабатываются как отдельные контексты браузера, поэтому вы должны указать, в каком кадре вы находитесь. (Для вложенных элементов iframe вам придется указывать каждый из них, пока вы не доберетесь до нужного контекста). В этом случае ваш код должен выглядеть так:

require 'watir'
b = Watir::Browser.new
b.goto "https://login.aliexpress.com"
b.iframe(id: 'alibaba-login-box').text_field(name: "loginId").set "xxxxxxx@xxx.xx"
b.iframe(id: 'alibaba-login-box').text_field(name: "password").set "xxxxxxxxxxx"

Пожалуйста, добавьте require 'watir-webdriver'. Также убедитесь, что вы используете последнюю версию 'watir-webdriver' и версию Watir как 1.5.1.1145.

Другие вопросы по тегам