簡體   English   中英

無法在Selenium Webdriver中處理Sharepoint彈出頁面

[英]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的隱式等待機制:

http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp

看來我找到了解決方案。

當彈出窗口打開時,它不會打開一個新幀,但似乎失去了對現有幀的關注。 我嘗試訪問彈出窗口之前嘗試了driver.switchTo().frame(0) ,這樣driver.switchTo().frame(0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM