我正在尝试使用Watir-Webdriver自动化测试脚本。在编写脚本时,我需要填写登录详细信息。现在它将在一个简单的text_field中,我知道语法,它会更容易。但是当我检查该页面上的元素时,我看到了以下内容:
<div class="signin-part">
<iframe id="zohoiam" frameborder="0" allowtransparency="true" style="width:430px;height:350px;margin: 0;float:left" src="https://accounts.zoho.com/login?servicename=ZohoCRM&serviceu…o&hide_signup=true&css=https://www.zoho.com/css/prd-sign.css" scrolling="no" name="zohoiam" marginheight="0" marginwidth="0">
#document
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1.dtd">
<html>
<head></head>
<body class="bodycolor" onload="setlwh();">
<noscript></noscript>
<div id="enableCookie" class="loginNotes" style="display:none;"></div>
<table id="outertable" class="mobile-login" width="100%" style="">
<tbody>
<tr valign="top"></tr>
<tr></tr>
<tr>
<td align="center">
<form id="msgOrgUserform" class="hide" method="post" name="msgOrgUserform"></form>
<div id="loginform">
<div class="mobilelogo"></div>
<form id="login" class="" novalidate="" method="post" onsubmit="javascript:return submitlogin(this);" name="login">
<table id="inntbl" class="mob_width" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td valign="top">
<table class="mob_width" width="260" cellspacing="2" cellpadding="1" align="center">
<tbody>
<tr></tr>
<tr></tr>
<tr>
<td class="label"></td>
<td align="left">
<input id="lid" class="input usrbx" type="email" onkeypress="clearmsg()" value="" name="lid"></input>
</td>
</tr>
所以,正如我所看到的,电子邮件字段位于表格内 - &gt;细胞。所以我无法使用Watir访问它。我试过这样的话:
b.text_field(:id,'lid').set 'my value'
有人可以帮忙吗?
答案 0 :(得分:1)
在以下行中,Watir将在iframe(和帧)中的除之外的任何位置查找元素。
b.text_field(:id,'lid').set 'my value'
与其他元素不同,您必须告诉Watir何时元素在框架中。这与您将元素搜索范围扩展到特定元素的方式类似。
例如,如果只有1个iframe或您的元素位于第一个iframe中,则可以执行(注意添加.iframe
):
b.iframe.text_field(:id => 'lid').set 'my value'
如果有多个iframe,则需要添加参数以更具体地说明要使用的iframe。例如,框架具有id:
b.iframe(:id => 'zohoiam').text_field(:id,'lid').set 'my value'