Как выполнить два или более сценариев выполнения одновременно по одному URL-адресу с помощью WATIR
Я использую watir 2.0.1, в настоящее время, если на URL-адресе выполняется скрипт, скажем ABC.com на одной вкладке для браузера IE, и если я открою тот же URL-адрес ABC.com на другой вкладке или в новом экземпляре браузера, то выполнение переключится на эта новая вкладка открыта. Из-за этого я не могу выполнить несколько сценариев / исполнений на одном URL
Вот код для Script1.rb в Project1,
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 заполняет регистрационную форму для приложения ABC в экземпляре Browser instance1, в то же время (скажем, после того, как Script1 введет имя, я вызову Script2.rb для некоторых основных проверок страницы формы регистра.
Вот код для Script2.rb в Project2,
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 ответ
Проблема в том, что каждый скрипт подключается к браузеру, который может быть, а может и не быть тем, который был открыт ранее в скрипте.
Линия:
browser = Watir::Browser.attach(:title, /ABC Application/)
Говорит, чтобы прикрепить к первому браузеру с заголовком, который включает в себя "ABC Application". Если все сценарии ищут этот заголовок, все они будут подключены к одному и тому же браузеру.
Решение состоит в том, чтобы использовать браузер, который был открыт скриптом. Это должно просто потребовать удаления этого Watir::Browser.attach
линия. browser
переменная будет продолжать указывать на браузер, который он открыл в browser = Watir::Browser.new
,