0

短版會產生問題:Chrome的新標籤頁防止舊標籤被利用,修復該是在他們的PDF文件打開的標籤指的是人類之前可以檢查PDF文件得到重用。開闢新的標籤使用的Watir使用打開的標籤

龍版本: 本來它的工作是這樣的:

  1. 打開新的Chrome窗口的應用程序的主網頁(標籤#1) 2做處理A,然後]點擊按鈕和一個新選項卡(選項卡#2)以PDF A打開。
  2. 返回到選項卡#1 [執行處理B然後]單擊該按鈕,然後打開一個新選項卡(選項卡#3),其中帶有PDF B。
  3. 回到選項卡#1 [執行進程C然後]單擊該按鈕,打開一個新選項卡(選項卡#4)並下載Word文檔C文檔。
  4. 回到選項卡#1 [執行進程D,然後]單擊該按鈕並打開一個新選項卡(選項卡#5)並下載Word文檔D文檔。

所有標籤保持開放和PDF文件可以查看。不完美,但可行。

但事情發生了變化。我把經常使用的東西拉出來,把它們放在另一個文件的方法中,這樣所有的各種測試都可以使用它們,這似乎是一個好主意。但是,這似乎導致了對原始窗口失去專注的問題。 (我可能是錯的),現在我只能堅持:

  1. 打開新的Chrome窗口的應用程序的主網頁(標籤#1)
  2. [做處理A,然後]點擊按鈕和一個新的選項卡(選項卡#2)以PDF A打開。
  3. 保留在標籤#2中[執行過程B然後]單擊該按鈕並打開一個新標籤(標籤#3),其中帶有PDF B。 PDF A現在丟失
  4. 留在標籤#3中[執行C進程然後]單擊該按鈕並打開一個新選項卡(選項卡#4)並下載Word文檔C文檔。 PDF B現在丟失
  5. 停留在標籤#4 [執行過程D然後]單擊該按鈕並打開一個新選項卡(選項卡#5)並下載Word文檔D文檔。

這是通過使用「b.windows.last.use」 所以我試圖用「b.windows.first.use」 但是失敗造成的,因爲重點不是要回標籤# ,而watir無法找到需要點擊的模式中的對象。 (in`assert_ok':元素不可點擊點(737.5,-373)(Selenium :: WebDriver :: Error :: UnknownError))

據我所知,如果我可以,我會好起來的請執行以下任一操作:

  1. 獲得PDFs下載。我不能。 This page似乎很有希望,但代碼無法正常工作,我無法修復它。
  2. 得到watir回到第一頁,「爲realsies」,並找到它需要的按鈕
  3. 也許爲測試的每個部分打開一個新的標籤(我要去看看這個,但我不是過於樂觀)

任何想法? 我在最近兩個月內更新了Watir和Ruby。我在OSX上使用Chrome。移動到Windows或IE是不可行的選擇。

這是部分的代碼。不,我並不是程序員。

謝謝。

currenturl = "stackoverflow.placeholder.com/works"  

# print Inventory Report .PDF (document 1) 
b.goto currenturl 
b.div(:id, 'page').a(:text, 'Inventory Report').click 
sleep 1 
b.div(:id, 'printInventoryReportModal').a(:text, 'A4').click 
b.link(:id => "submitBTNprint-inventory-report").fire_event "onclick" 

# print General List .PDF (document 2) 
b.goto [main page URL] 
b.div(:id, 'page').a(:text, 'General List').click 
sleep 1 
b.div(:id, 'printGeneralInventoryListModal').a(:text, 'A4').click 
b.link(:id => "submitBTNprint-general-list").fire_event "onclick" 

# print General List .DOC (document 3) 
b.goto [main page URL]  
b.div(:id, 'page').a(:text, 'General List').click 
sleep 1 
b.div(:id, 'printGeneralInventoryListModal').a(:text, '.DOC').click 
b.div(:id, 'printGeneralInventoryListModal').a(:text, 'A4').click 
b.link(:id => "submitBTNprint-general-list").fire_event "onclick" 
+1

兩件事情,它可能有助於只是減少下來到代碼調用您共同幫手的部件之一方法,然後還包括這些方法的代碼。其次,我將指出,對於諸如打印庫存報告之類的項目,我從來沒有看到它設置,甚至使用'currenturl',但它將該變量(以及變量的值IN)傳遞給page_status和section_results方法 – 2013-05-08 22:28:46

+0

如果不提供輔助方法的代碼,很難得到完整的圖片,並且可能會得到零答案。另外對於打開的其他標籤,有沒有類似的東西,噢可用於允許.window方法正確定位您想要的標籤的有用標題?這比使用.last和.first找到你想要的標籤 – 2013-05-09 16:19:19

+0

查克, 首先:感謝您的輸入。 即使沒有常用的幫助器方法,問題依然存在,所以我將它們從上面的代碼中刪除。爲了完整性,我添加了「currenturl」的佔位符。 至於命名選項卡,我嘗試使用'b.window(:title =>「tab_name」)。use do'但是這也沒有幫助。據我所知,它失敗了,因爲瀏覽器實際上沒有將焦點改回第一個/最後一個/指定的選項卡,並且該頁面上出現的模式在沒有焦點的情況下不可訪問。 – 2013-05-09 18:43:30

回答

0

似乎主要是browser.window函數不能按照您期望的方式工作,或者您沒有正確使用它。由於您的問題目前很少包含您想要更改窗口(標籤)的示例,因此很難說出您可能會做錯什麼。

首先,我開始會使用IRB做了一些探索和故障排除

獲取到IRB,然後用

require 'watir-webdriver' 
b = Watir::Browser.new :chrome 

現在手動導航打開的瀏覽器窗口,並讓它進入的狀態下,你有多個選項卡打開

現在嘗試這樣的事情在IRB,看看你能得到它吐出窗口標題

b.windows.each {|window| puts window.title} 

如果標題不同,那麼您應該可以使用它來設置要使用的窗口。如果它們不相同,則需要查看其他屬性以查看是否有簡單的方法來確定您想要的窗口。 (或者只是使用:指數)

0

嘗試下面的代碼,

睡眠(2)

@browser.driver.switch_to.window(@browser.driver.window_handles[put_your_index]) 
@browser.window(:title,"Please put your title here").use do 
end 
@browser.button.when_present.click 
當你要要切換回您的實際窗口
  1. ,使用 與上面相同的代碼並相應地更改窗口索引。

舉個例子,如果父窗口指數爲0,然後子窗口指數將1

相關問題