如何使用WATIR在同一URL上同时执行两个或多个执行脚本

时间:2015-03-25 06:35:25

标签: internet-explorer automation watir watir-classic

我正在使用watir 2.0.1,目前如果脚本在url上运行,在IE浏览器的一个标签中说ABC.com,如果我在浏览器的其他标签或新实例中打开相同的网址ABC.com则执行将切换到这个新标签打开。 因此,我无法在同一个URL上执行多个脚本/执行

以下是Project1中Script1.rb的代码,

require 'watir'
browser = Watir::Browser.new
browser.goto 'https://example.com'
browser = Watir::Browser.attach(:title, /ABC Application/)
browser.button(:text,"Register").click
sleep 2
browser.text_field(:id,"First_Name").set "Script_1_FirstName"
sleep 2
browser.text_field(:id,"Last_Name").set "Script_1_LastName"

依旧......

当Script1在浏览器instance1中填写ABC应用程序的注册表时,同时(在Script1输入名字之后说,我将触发Script2.rb以进行注册表单页面的一些基本验证。

以下是Project2中Script2.rb的代码,

require 'watir'
browser1 = Watir::Browser.new
browser1.goto 'https://example.com'
browser1 = Watir::Browser.attach(:title, /ABC Application/)

//At this time Script2 will execute properly in IE Instance2 as there is
//no Register button at IE instance1(Because Script1 is already on
//Register form page) 

browser1.button(:text,"Register").click

//The movement Register form opens in IE instance2,Script1 finds same page
//elements on IE instance2 so currently Script1 is automatically start its
//execution on IE instance2 which will affect Script2 Execution.     

if(browser1.text_field(:id,"First_Name").text.include("")
puts "First name field is blank by default"
else
raise "First name field is not blank by default"

if(browser1.text_field(:id,"Last_Name").text.include("")
puts "Last name field is blank by default"
else
raise "Last name field is not blank by default"

1 个答案:

答案 0 :(得分:0)

问题在于每个脚本附加到浏览器,这可能是也可能不是在脚本中早期打开的脚本。

该行:

browser = Watir::Browser.attach(:title, /ABC Application/)

说要附加到第一个浏览器,其标题包含" ABC Application"。如果所有脚本都在寻找此标题,则它们将全部附加到同一浏览器中。

解决方案是使用脚本打开的浏览器。这应该只需要删除此Watir::Browser.attach行。然后,browser变量将继续指向它在browser = Watir::Browser.new中打开的浏览器。

相关问题