短版會產生問題:Chrome的新標籤頁防止舊標籤被利用,修復該是在他們的PDF文件打開的標籤指的是人類之前可以檢查PDF文件得到重用。開闢新的標籤使用的Watir使用打開的標籤
龍版本: 本來它的工作是這樣的:
- 打開新的Chrome窗口的應用程序的主網頁(標籤#1) 2做處理A,然後]點擊按鈕和一個新選項卡(選項卡#2)以PDF A打開。
- 返回到選項卡#1 [執行處理B然後]單擊該按鈕,然後打開一個新選項卡(選項卡#3),其中帶有PDF B。
- 回到選項卡#1 [執行進程C然後]單擊該按鈕,打開一個新選項卡(選項卡#4)並下載Word文檔C文檔。
- 回到選項卡#1 [執行進程D,然後]單擊該按鈕並打開一個新選項卡(選項卡#5)並下載Word文檔D文檔。
所有標籤保持開放和PDF文件可以查看。不完美,但可行。
但事情發生了變化。我把經常使用的東西拉出來,把它們放在另一個文件的方法中,這樣所有的各種測試都可以使用它們,這似乎是一個好主意。但是,這似乎導致了對原始窗口失去專注的問題。 (我可能是錯的),現在我只能堅持:
- 打開新的Chrome窗口的應用程序的主網頁(標籤#1)
- [做處理A,然後]點擊按鈕和一個新的選項卡(選項卡#2)以PDF A打開。
- 保留在標籤#2中[執行過程B然後]單擊該按鈕並打開一個新標籤(標籤#3),其中帶有PDF B。 PDF A現在丟失
- 留在標籤#3中[執行C進程然後]單擊該按鈕並打開一個新選項卡(選項卡#4)並下載Word文檔C文檔。 PDF B現在丟失
- 停留在標籤#4 [執行過程D然後]單擊該按鈕並打開一個新選項卡(選項卡#5)並下載Word文檔D文檔。
這是通過使用「b.windows.last.use」 所以我試圖用「b.windows.first.use」 但是失敗造成的,因爲重點不是要回標籤# ,而watir無法找到需要點擊的模式中的對象。 (in`assert_ok':元素不可點擊點(737.5,-373)(Selenium :: WebDriver :: Error :: UnknownError))
據我所知,如果我可以,我會好起來的請執行以下任一操作:
- 獲得PDFs下載。我不能。 This page似乎很有希望,但代碼無法正常工作,我無法修復它。
- 得到watir回到第一頁,「爲realsies」,並找到它需要的按鈕
- 也許爲測試的每個部分打開一個新的標籤(我要去看看這個,但我不是過於樂觀)
任何想法? 我在最近兩個月內更新了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"
兩件事情,它可能有助於只是減少下來到代碼調用您共同幫手的部件之一方法,然後還包括這些方法的代碼。其次,我將指出,對於諸如打印庫存報告之類的項目,我從來沒有看到它設置,甚至使用'currenturl',但它將該變量(以及變量的值IN)傳遞給page_status和section_results方法 – 2013-05-08 22:28:46
如果不提供輔助方法的代碼,很難得到完整的圖片,並且可能會得到零答案。另外對於打開的其他標籤,有沒有類似的東西,噢可用於允許.window方法正確定位您想要的標籤的有用標題?這比使用.last和.first找到你想要的標籤 – 2013-05-09 16:19:19
查克, 首先:感謝您的輸入。 即使沒有常用的幫助器方法,問題依然存在,所以我將它們從上面的代碼中刪除。爲了完整性,我添加了「currenturl」的佔位符。 至於命名選項卡,我嘗試使用'b.window(:title =>「tab_name」)。use do'但是這也沒有幫助。據我所知,它失敗了,因爲瀏覽器實際上沒有將焦點改回第一個/最後一個/指定的選項卡,並且該頁面上出現的模式在沒有焦點的情況下不可訪問。 – 2013-05-09 18:43:30