Ruby watir webdriver未找到或填写文本字段
我正在开发一个watirwebserver的Ruby脚本,我让它首先用Ruby-Tk提示用户输入用户名和密码 在任何情况下,我都可以使用以下代码打开页面:Ruby watir webdriver未找到或填写文本字段,ruby,watir-webdriver,Ruby,Watir Webdriver,我正在开发一个watirwebserver的Ruby脚本,我让它首先用Ruby-Tk提示用户输入用户名和密码 在任何情况下,我都可以使用以下代码打开页面: b = Watir::Browser.start 'https://connect.mypage.com/Home' 之后,我称之为: t1=b.text_field(:id => 'ctl00_cphBody_txtUserName').when_present.set @entry1.textvariable <input
b = Watir::Browser.start 'https://connect.mypage.com/Home'
之后,我称之为:
t1=b.text_field(:id => 'ctl00_cphBody_txtUserName').when_present.set @entry1.textvariable
<input name="ctl00$cphBody$txtUsername" id="ctl00_cphBody_txtUsername" class="firstFocus" maxlength="50" type="text">
什么都没有填
我尝试过为ctl00_cphBody_txtUsername编码一个名称,但也没有成功
使用Firefox中的Inspector,字段构造如下:
t1=b.text_field(:id => 'ctl00_cphBody_txtUserName').when_present.set @entry1.textvariable
<input name="ctl00$cphBody$txtUsername" id="ctl00_cphBody_txtUsername" class="firstFocus" maxlength="50" type="text">
firstFocus的课程是:
<script type="text/javascript">
$(document).ready(function () {
jQuery('.firstFocus').focus();
});
</script>
如果我启动浏览器并按如下方式打开页面,我在查找这两个文本字段时没有问题:
browser = Watir::Browser.new
browser.goto 'https://connect.mypage.com/Home'
#Then, the first item actually has a class, so I use that
t1=browser.text_field :class => 'firstFocus'
t1.set @entry1.textvariable
问题是定位器区分大小写 请注意,id属性值是ctl00_cphBody_txtsername,但使用的定位器是ctl00_cphBody_txtsername。由于N与N不匹配,因此从未找到元素,这就是when_present超时的原因 更正定位器中的id将解决此问题:
t1=b.text_field(:id => 'ctl00_cphBody_txtUsername').when_present.set @entry1.textvariable
a在加载页面之前,您是否尝试过类似“睡眠2”的方法?可能需要一两秒钟才能加载所有内容,而不是在加载页面时立即填充所有内容。当你在ajax密集型网站上不适合我的时候。另外,在执行.set之前,请尝试对元素执行.fire\u事件'focus'。我在b=Watir::Browser.start之后放置了一个Sleep60,没有填充任何内容,唯一的错误/异常是water webdriver超时。您是否尝试过像'focus'more do.set那样向它发送javascript?元素是在框架中还是在iframe中?