(Cucumber / ruby ​​/ PageObject) Доступ к элементу ввода (форма) в iframe / iframe с PageObject - PullRequest
0 голосов
/ 09 января 2019

Мне нужен доступ к этому элементу:

<input type="tel" pattern="[0-9 ]*" name="card_number" id="card_number" autocomplete="off" size="22" class="input-outline-none">

Он помещается во второй iframe вот так (проще говоря, чтобы он не был слишком сложным):

<iframe scrolling="no" data-aura-rendered-by="203:0" id="<<iframe_id>>" src="<<iframe_url>>" width="100%" height="95px" frameborder="0">
#document
 <!DOCTYPE html PUBLIC .....>
(...)
<iframe scrolling="no" id="<<iframe2_id>>" name="<<iframe2_name>>" src="<<iframe2_url"" width="100%" height="100%" frameborder="0">
#document
 <!DOCTYPE html PUBLIC .....>
(...)
<form accept-charset="UTF-8" action="javascript:void(0);" id="number-form" onsubmit="return false;">
    <label for="card_number" class="visuallyhidden" id="number_label">Card Number</label>
    <input type="tel" pattern="[0-9 ]*" name="card_number" id="card_number" autocomplete="off" size="22" class="input-outline-none">
    (...)
  </form>
(...)
</iframe>

</iframe>

Я пытался получить к нему доступ таким образом (используя Ruby / cucumber / waitr / PageObject):

 in_iframe(:id => 'YPWNwIjOrg') do |outer_iframe|
    in_iframe({:id => 'spreedly-number-frame-9437'}, outer_iframe) do |inner_iframe|
      element(:cc_num, :id => "card_number", :frame => inner_iframe)
    end
  end

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

with exception: timed out after 30 seconds, waiting for #<Watir::IFrame: located: false; {:id=>"<<iframe_id>>", :tag_name=>"iframe"}> to be located
Browser driver used: #<Selenium::WebDriver::Chrome::Driver:0x00007fc1e33d7910>

Как правильно получить к нему доступ?

1 Ответ

0 голосов
/ 24 января 2019

Вы можете использовать element.iframe (id: "idFrame"). iframe (id: "idFrame2"). input (id: "номер_карты")

...