我正在尝试使用Watir自动将文本输入到嵌套在iframe中的输入字段。
我正在尝试访问iframe
fr = b.frame(:index => 0)
fr.text.include? 'Remember My Sign-In ID'
这是假的。
此外,如果我尝试输出fr.text
,它只是一个空字符串。
我还创建了一个HTML的小提琴,我试图反对它。
或者您可以访问实际网站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">
答案 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