簡體   English   中英

IE和Selenium:window.createPopup()

[英]IE and Selenium: window.createPopup()

我最近一直在與Selenium一起玩,試圖為僅IE應用程序創建測試。 事情進展順利(盡管沒有記錄器插件,我的工作進展緩慢,但我不得不反復嘗試才能找到合適的元素路徑),但是現在我遇到了與彈出菜單有關的問題。

大多數應用程序操作都是通過使用javascript window.createPopup()創建的彈出菜單觸發的,我似乎找不到找到將事件發送到彈出窗口中的元素的方法。

也許我應該像使用window.open(...)打開的窗口那樣選擇彈出窗口,順便說一句。 我嘗試為createPopup()返回的彈出菜單分配一個名稱,並以與對待Windows相同的方式對其進行處理,但這似乎不起作用。

有人知道這是否應該工作嗎? 任何幫助將不勝感激。

謝謝,

抱歉不行。 Selenium無法訪問window.createPopup。 作為IE的唯一功能,它的可移植性確實受到限制,通常不是最佳實踐。 我知道這對您來說無濟於事,因為我假設您被使用createPopup的其他人的代碼所困擾。

真正的問題是craeatePopup不會向DOM添加任何內容。 嘗試打開一個彈出對象並查看其源。 您會看到以下內容:

<html><body></body></html>

因此,Selenium確實沒有什么可抓住的。

彈出窗口對您的應用程序有什么作用? 您表示它提供了一些導航,您可以直接導航到那些頁面嗎?

如果您知道窗口的名稱,則可以

selenium.click("elementToLaunchPopup");
selenium.waitForPopup("nameOfWindow",30000);
selenium.selectWindow("nameOfWindow");
// rest of your test

要返回主窗口,您需要selenium.selectWindow("null");

我在InternetExplorerDriver中使用硒2.0b3。 我找到了可以解決問題的方法。

在您的js中,保存對彈出窗口的引用。

  var popUp= window.createPopup();

然后在您的Java代碼中:

public Object executeJS(String code){
    JavascriptExecutor js = (JavascriptExecutor) driver;
    return js.executeScript(code);  
}
WebElement popUp =(WebElement) 
     executeJS("return  popUp.document.documentElement;");

這將為您提供對該頁面的參考,並且您可以正常地找到元素。

暫無
暫無

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

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