在watir-webdriver中没有正确填写文本字段

时间:2012-01-27 17:24:36

标签: watir watir-webdriver

我最近决定从使用watir切换到使用watir-webdriver作为我的测试脚本。除了这种奇怪的行为外,它的效果很好。当涉及到具有多个文本字段的表单(例如,名字字段和姓氏字段)时,它会错误地填充这些字段。它通常填写名字,然后填写一个或两个姓氏,然后跳回到名字字段,并将姓氏的其余部分附加到名字上。

一个例子是名字/姓氏文字字段。我写剧本填写吉姆的名字和约翰逊的姓氏。当我运行脚本时,我将以Jimhnson为名,Jo为姓。它就像是决定跳回到姓氏字段中间的第一个名字字段。这是我从未经历过使用Watir的东西,并且已经搜索了类似的实例,但没有运气。希望有人可以提供帮助。这是我正在使用的代码示例。我不想使用“睡眠1”,但发现它是阻止这种奇怪行为的唯一因素。

 def fill_in_applicant_name(fName, lName)
  puts "Fills in the applicant first name"
  @@b.text_field(:id, "ApplicantFirstName").set(fName)

  #sleep 1

  puts "Fills in the applicant last name"
  @@b.text_field(:id, "ApplicantLastName").set(lName)
end

2 个答案:

答案 0 :(得分:2)

如果你需要一个睡眠声明,听起来有一些AJAX或Javascript在填充text_field之后被解雇了?由于您明确命名了正在填充的text_fields,因此我没有其他理由可以考虑为什么文本最终会放在一个框中。

变量名称周围的括号是多余的,不像Ruby那样。它们可以被移除。

我对此方法的处理方法是使用when_present,以确保文本字段可以访问。

def fill_in_applicant_name(first, last)
 @browser.text_field(:id, "First").when_present.set first
 @browser.text_field(:id, "Last").when_present.set last
end

如果收到错误,请根据需要使用其他等待方法

Watir::Watir.until(30) { @browser.text_field(:id, "Last").visble? }

如果这不起作用,您可以从您正在测试的页面发布一些代码来帮助我们吗?

答案 1 :(得分:1)

好吧,关闭firefox的本机事件创建和运行watir-webdriver测试已经有一周左右了。这肯定是问题的答案。因为关闭原生事件,我没有发生过这种异常行为。测试/检查运行良好,我只有一个小问题。应用程序页面之一会出现弹出消息,并且在您继续浏览下一页时永远不会消失。这有点烦人,但它不会以任何方式影响测试。谢谢各位的意见。这是再次关闭原生事件的代码。

profile = Selenium::WebDriver::Firefox::Profile.from_name "webdriver"
profile.native_events = false
browser = Watir::Browser.new :firefox, :profile => profile