使用watir-webdriver输入嵌套在iframe中的文本

时间:2014-01-19 16:31:27

标签: ruby watir watir-webdriver

我正在尝试使用Watir自动将文本输入到嵌套在iframe中的输入字段。

我正在尝试访问iframe

fr = b.frame(:index => 0) fr.text.include? 'Remember My Sign-In ID'

这是假的。 此外,如果我尝试输出fr.text,它只是一个空字符串。

我还创建了一个HTML的小提琴,我试图反对它。

Fiddle

或者您可以访问实际网站here

我正在尝试按索引访问iframe,因为没有指定ID或类。

<iframe height="auto" frameborder="0" src="https://auth.api.sonyentertainmentnetwork.com/2.0/oauth/auth…rtainmentnetwork.com/shared/html/signinRedirect_SSOAuth.html" marginwidth="0" marginheight="0">

1 个答案:

答案 0 :(得分:0)

找到合适的框架

第一个问题是你正在寻找错误的框架。页面上实际上有4个框架(假设您已单击“登录”链接)。

为避免按索引定位元素,您还应该考虑iframe周围元素的属性:

<div class="_modal_content close-this-modal" id="_modal_content" tabindex="998">
  <div class="modal modal-iframe" tabindex="1000">
    <h1></h1>
    <div style="height: 638px;" class="modal-iframe-wrapper">
      <iframe marginheight="0" marginwidth="0" src="removed.html" frameborder="0" height="auto">

正如您在此html中看到的那样,框架是“_modal_content”div标签中的第一帧。因此,您可以找到以下框架:

fr = b.div(:id => '_modal_content').frame

获取框架文字

第二个问题是text方法为框架元素返回一个空字符串。我不记得它是否一直都是这样,但似乎你需要检查框架中特定元素的文本(而不是框架本身)。最简单的方法是获取第一个元素,即html元素。

fr.element.text.include? 'Remember My Sign-In ID'
#=> true