2017-08-24 51 views
-2

我需要確認一個模式彈出窗口。我有一張填滿的表格,必須轉到下一頁。當我點擊繼續時,會出現一個模式彈出窗口,詢問填充的細節是否正確?無法使用硒在模態彈出窗口中查找元素

有兩個按鈕和一些其他描述。一個鍵讀取取消等說Yes, information is correct.我試圖通過

driver.switchTo().frame(0); // there is only one popup 

但是,無論我做webDriver因爲沒有webelement發現在NullPointerException導致後切換到模式的元素。

這正是我試圖

WebElement modalButtonContainer = AutoUtils.findElementByClassName(modalOverlay, "modalButtonContainer"); 
WebElement modalButton = AutoUtils.findElementByClassName(modalButtonContainer, "buttonClass"); 
modalButton.click(); 

但在NullPointer所有結果。我如何點擊modalButton

+0

分享網站的網址。 –

回答

0

如果我正確記得driver.switchTo().frame(0);切換到元素。在這裏你正在談論popup。這一個又依賴,如果這是一個典型的JavaScript彈出與javascript:alert('popup')或類似的調用,然後

Alert alert = driver.switchTo().alert(); 
alert.accept(); 

是要走的路。否則,如果它是一些引導彈出窗口,那麼根本不需要任何切換,也許只有一些FluentWait

(如果它不能正常工作,請您分享的DOM)

+0

這不是一個警報。已經嘗試過,它會給出「無警報存在」異常。 –

+0

你有沒有嘗試過切換?在'modalButton.click();' – Pijotrek

+0

是的之前臨時添加(!)Thread.sleep(2000)進行測試。切克辛似乎沒有幫助。 –

0

由於有上彈出兩個按鈕,如果兩個按鈕的類名相同(「buttonClass」)

不如嘗試使用名稱或其他一些唯一屬性來標識具有其他定位器的按鈕。

WebElement modalButtonContainer = AutoUtils.findElementByClassName(modalOverlay, "modalButtonContainer"); 
WebElement modalButton = AutoUtils.findElementByName(modalButtonContainer, "Cancel"); 
         (or) 
WebElement modalButton = AutoUtils.findElementByName(modalButtonContainer, "Yes, information is correct."); 
modalButton.click(); 
0

NullPointerException並不意味着element not found。這意味着你正試圖訪問一個尚未初始化的對象。檢查你的堆棧跟蹤。它會告訴你一個確切的線,你試圖訪問一個未初始化的對象。它可能是您正在與之交互的頁面對象或Web元素。當您檢測到問題時,請確認已使用new運算符。或者,如果您使用的是PageFactory,請不要忘記撥打initElements