請在宣稱我的問題重複之前,閱讀我面臨的問題。有很多提供解決方案如何處理JavaScript窗口的stackoverflow,但我的情況是非常具體的。如何使用selenium和Java處理javascript彈出窗口?
我正在開發基於Web的應用程序的自動化過程。最近,開發團隊推出了一個MODAL(這意味着該窗口出現在整個網頁的頂部,禁用所有元素定位器)的javascript彈出式調查窗口,提示我們的客人是否參加此調查。我並行運行測試(每次2或3個線程)。對於真正的用戶,可以手動與給定頁面進行交互,有幾種選擇如何擺脫窗口:或者單擊「否」按鈕,或者只是單擊頁面上的任何位置。我發現如何使用硒對「否」按鈕點擊的方式,其中driver.findElement(By.xpath(「xpathOfNOButton」)點擊
第一個問題是:沒有線索時和在下一次運行測試的時候,這個模式窗口會出現在什麼頁面上,有些情況下模態窗口根本沒有出現,有時候用戶可能只是打開主頁,窗口立刻出現,有時可能需要4- 6分鐘,沒有邏輯開發團隊只提供瞭解釋,這個JavaScript模式窗口將出現在33%的網站訪問者(第三方供應商,沒有內部控制),就是這樣,所以解決方案就像等待一定的時間,然後點擊「否」按鈕將不起作用。沒有步驟存在t可以觸發這個模式窗口彈出(就像其他一些應用程序一樣)。
試圖解決:因爲這只是我們的web應用程序的生產版本發生的事情,我設立了Firefox的配置邏輯,一旦它與WWW啓動。的URL,它將禁用頁面上的所有JavaScript。但是這個解決方案完全打破了所有的頁面,因爲許多其他功能依賴於這些功能。
問題:有沒有什麼辦法在Java或硒檢查給定頁面的整個HTML結構,以確定此模式彈出腳本是否存在於HTML或不是?我知道這可能會增加我的測試時間,因爲我將不得不扼殺其他每一頁。
第二個問題是:有什麼辦法,在頁面的空白區域單擊,而無需指定與硒的webdriver特定元素?如果是的話,模態窗口被捕獲,我可以做這個動作來關閉模態窗口。
據我瞭解這是一個自定義js警報? – unickq
@NickQ你好。不太熟悉自定義和非自定義js Alerts,但這是對應於我頭痛的HTML結構行 – GordonFreaman
這個模型窗口是如何創建的?如果這是一個具有特定名稱的DIV元素,您可以在頁面上檢查它們。關於第二個問題,由於這是一個模型窗口,因此它的大小會小於頁面的大小,所以只需點擊頁面角落中幾個pixcel的位置即可。 – lsiva