2017-09-14 64 views
3

在硒測試步驟中(像點擊按鈕)我想阻止硒等待頁面加載完成。我不能拋出加載異常,因爲那時我不能再處理頁面。 它可以做到這樣的事情simmilar:在已經運行的selenium webdriver上設置能力

DesiredCapabilities dr = DesiredCapabilities.chrome(); 
dr.setCapability("pageLoadStrategy", "none"); 
WebDriver driver = new RemoteWebDriver(new URL("...."), dr); 

我想要的是像 「dr.setCapability(」 pageLoadStrategy 「 」無「);」但只是一個特定的步驟。

有沒有人知道一種方法來做到這一點?

+0

我懷疑任何驅動程序現在允許控制功能,驅動程序啓動後。所以我想這是不可能的AFAIK –

回答

1

瀏覽器啓動後,功能不再可編輯。 臨時禁用等待的一種方法是使用腳本注入實現您自己的get

事情是這樣的:

// 
// loads the page and stops the loading without exception after 2 sec if 
// the page is still loading. 
// 

load(driver, "https://httpbin.org/delay/10", 2000); 
public static void load(WebDriver driver, String url, int timeout) { 
    ((JavascriptExecutor)driver).executeScript(
    "var url = arguments[0], timeout = arguments[1];" 
    "window.setTimeout(function(){window.location.href = url}, 1);" + 
    "var timer = window.setTimeout(window.stop, timeout);" + 
    "window.onload = function(){window.clearTimeout(timer)}; " 
    , url, timeout); 
} 
+0

謝謝您的回答。如果我沒有錯,但與腳本的頁面將停止加載..這不是笏我想要的。該頁面繼續加載,但我希望硒不在特定的步驟等待。 – FastDev

0

由於目前實施的硒,一旦我們通過DesiredCapabilities類配置WebDriver實例與我們的預期配置和初始化WebDriver會議打開瀏覽器,我們不能更改功能運行時。

值得一提,不知何故,如果你能檢索運行時功能你仍然無法改變他們回來。

所以,按順序做出改變的pageLoadStrategy你必須啓動新的WebDriver會議。

這裏是與代理設置功能@JimEvans clear and concise answer(如10月24日'13在13:02):

當您爲任何給定的驅動程序的代理,它是當時唯一的設定WebDriver會話已創建;它不能在運行時更改。即使您獲得了創建的會話的功能,您也無法對其進行更改。所以答案是,不,如果你想使用不同的代理設置,你必須開始一個新的會話。

+0

感謝,我看到那是不可能的,但創建一個新的webdriver是不是一個很好的選擇,我也因爲我不能說司機指向舊 – FastDev

相關問題