[英]Cannot handle Sharepoint pop-up page in Selenium Webdriver
我正在嘗試使用Selenium Webdriver自動化Sharepoint站點,但無法讓我的代碼識別新彈出窗口中的元素。
情景如下; 在腳本中的某一點,我們點擊指向新布告欄項目的鏈接。 將鼠標懸停在此給我指針, Javascript:OpenPopUpPage('/Lists/Noticeboard/NoticeboardNewFormMain.aspx')
。 單擊鏈接時,將顯示彈出窗口,並按預期禁用父屏幕。
此時腳本會嘗試識別彈出窗口中的第一個元素:
try{
element = driver.findElement(By.xpath("/html/body/form/div[4]/div[1]/div/div[1]/div[2]/div[2]/div[2]/table/tbody/tr/td/div/div/div/div/div[1]/span[1]/table/tbody/tr[2]/td/div[1]/div[3]/span[1]/input"));
}catch(Exception e){
Log.error(sRepositoryName + " | txt_Title not found | Exception desc : "+e.getMessage());
}
return element;
我已經使用Firebug檢查了xpath,這對於彈出窗口中的第一個對象是正確的。 通過xpath我可以看到沒有指定iFrame,因此嘗試driver.switchTo().frame(1)
不起作用。
我也嘗試過使用driver.getwindowhandles()
,但這只返回一個窗口,因此無需切換。
最后,我看到其他人建議它可能只是一個計時問題,因為當腳本檢查它們時,彈出窗體上的元素尚未創建,所以我嘗試使用Thread.sleep(15000)
為彈出窗口提供時間生成,但沒有成功。
無論我嘗試什么,我仍然會在彈出窗口中的所有元素上找到“無法定位元素”異常。 有沒有人有任何想法如何處理這些彈出窗口?
彈出窗口正在更改DOM,但您在更改產生影響之前進行查詢。
您需要使用Selenium的隱式等待機制:
看來我找到了解決方案。
當彈出窗口打開時,它不會打開一個新幀,但似乎失去了對現有幀的關注。 我嘗試訪問彈出窗口之前嘗試了driver.switchTo().frame(0)
,這樣driver.switchTo().frame(0)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.