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



我使用的是watir 2.0.1,目前如果一个脚本在IE浏览器的一个选项卡中的url ABC.com上运行,如果我在另一个选项卡或浏览器的新实例中打开相同的url ABCcom,则执行将切换到打开的新选项卡。因此,我无法在同一个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在Browser 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"

问题在于每个脚本都连接到一个浏览器,该浏览器可能是也可能不是脚本中早期打开的浏览器。

线路:

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

是说用包含"ABC应用程序"的标题附加到第一个浏览器。如果所有的脚本都在寻找这个标题,那么它们都将附加到同一个浏览器。

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

最新更新