Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何在watir中找到访问div内部iframe的页面对象 我想为div元素中的Iframe找到一个页面对象。 div元素中的Iframe_Ruby_Ui Automation_Watir Webdriver - Fatal编程技术网

Ruby 如何在watir中找到访问div内部iframe的页面对象 我想为div元素中的Iframe找到一个页面对象。 div元素中的Iframe

Ruby 如何在watir中找到访问div内部iframe的页面对象 我想为div元素中的Iframe找到一个页面对象。 div元素中的Iframe,ruby,ui-automation,watir-webdriver,Ruby,Ui Automation,Watir Webdriver,我试图找到div_元素并开始访问iframe,但我得到了未定义的方法 有人能帮助我们识别和访问div内部iframe的页面对象吗?页面对象gem没有用于frames/iframe的嵌套元素方法。您需要找到一个定位器,该定位器可以相对于浏览器(或另一个帧/iframe)唯一地标识帧/iframe。唯一支持相对于其他元素的相对位置的定位器是:css和:xpath 请注意,页面对象gem不包含对frame/iframe对象的引用(即没有像Watir中那样的嵌套元素调用)。相反,帧作为元素定位器的一部分

我试图找到div_元素并开始访问iframe,但我得到了未定义的方法


有人能帮助我们识别和访问div内部iframe的页面对象吗?

页面对象gem没有用于frames/iframe的嵌套元素方法。您需要找到一个定位器,该定位器可以相对于浏览器(或另一个帧/iframe)唯一地标识帧/iframe。唯一支持相对于其他元素的相对位置的定位器是
:css
:xpath

请注意,页面对象gem不包含对frame/iframe对象的引用(即没有像Watir中那样的嵌套元素调用)。相反,帧作为元素定位器的一部分传递

作为一个例子,让我们考虑下面的HTML,它添加了(简洁的)一些框架内容:

I want to find a page-object for an Iframe that is inside div element.

<html>
Iframe inside the div element
<div name=first>
    <iframe> 
    </iframe>
</div>
<div name=second>
    <iframe>
    </iframe>
</div>
同样,您可以看到每个iframe都有值:

class MyPage
  include PageObject

  def do_stuff_in_first_iframe
    in_iframe(css: 'div[name="first"] iframe') do |f|
      p span_element(frame: f).text
      p text_field_element(frame: f).value
    end
  end

  def do_stuff_in_second_iframe
    in_iframe(css: 'div[name="second"] iframe') do |f|
      p span_element(frame: f).text
      p text_field_element(frame: f).value
    end
  end
end

实际上,我需要访问iframe内部的元素(input,div),例如div元素内部的iframe,而不是iframe外部的div元素。这正是代码所做的。它正在访问iframe中的一个div元素。实际上我需要访问divrame中的iframe。是的,这段代码也在这样做。代码表示查找具有特定名称的
div
元素,即“first”或“second”。然后在该
div
中,找到
iframe
。最后,在该
iframe
中访问一个元素。我更新了我的例子,希望更清楚。如果这不是你想要的,我建议你给出一个更具体的例子-即你想要与之交互的确切HTML以及你想要的确切元素。嗨@Justin Ko,我可以知道iframe在iframe中的用途吗?在iframe中(css:'div[name=“second”]iframe')do | f|
class MyPage
  include PageObject

  # Define elements <div name="first"> iframe
  in_iframe(css: 'div[name="first"] iframe') do |f|
    span(:first_iframe_span, frame: f)
    text_field(:first_iframe_field, frame: f)
  end

  # Define elements <div name="second"> iframe
  in_iframe(css: 'div[name="second"] iframe') do |f|
    span(:second_iframe_span, frame: f)
    text_field(:second_iframe_field, frame: f)
  end
end
# Elements in the <div name="first"> iframe
p page.first_iframe_span
#=> "frame1 - span"
p page.first_iframe_field
#=> "1"

# Elements in the <div name="second"> iframe
p page.second_iframe_span
#=> "frame2 - span"
p page.second_iframe_field
#=> "2"
class MyPage
  include PageObject

  def do_stuff_in_first_iframe
    in_iframe(css: 'div[name="first"] iframe') do |f|
      p span_element(frame: f).text
      p text_field_element(frame: f).value
    end
  end

  def do_stuff_in_second_iframe
    in_iframe(css: 'div[name="second"] iframe') do |f|
      p span_element(frame: f).text
      p text_field_element(frame: f).value
    end
  end
end
page.do_stuff_in_first_iframe
#=> "frame1 - span"
#=> "1"

page.do_stuff_in_second_iframe
#=> "frame2 - span"
#=> "2"