簡體   English   中英

在瀏覽器實例之間切換

[英]Switching between browser instances

我有多個並行運行的Selenium測試。 如何“激活”不同的瀏覽器窗口(即模擬用戶在任務欄中的單擊,使窗口處於活動狀態)?

默認情況下,Selenium的第一個瀏覽器實例處於活動狀態,並且覆蓋了我的其他瀏覽器窗口。

我查看了其他SO線程(java),如果我對它們的理解正確,則應該跟蹤所有webdriver實例的“當前窗口句柄”,並按以下方式執行切換:

activeWebDriver.SwitchTo().Window(someInactiveWindowHandle);

這個對嗎? 如果是這樣,我將如何知道當前位於哪個Webdriver實例的頂部,因此我知道該哪個切換?

您可以使用driver.CurrentWindowHandle在窗口上driver.CurrentWindowHandle 這是一個看起來像的字符串

“ CDwindow-3E960650-3D6F-4083-939A-5887B46A5E23”

並用於標識當前驅動程序的活動窗口。

string currentHandler = driver.CurrentWindowHandle;

// switch to new window
foreach (string handle in driver.WindowHandles)
{
    if (!handle.Equals(currentHandler))
    {
        driver.SwitchTo().Window(handle);
    }
}

//do something on new window

// switch back to old window
driver.Close();
driver.SwitchTo().Window(currentHandler);

使用范例

Dictionary<string, IWebDriver> driversByHandles;

IWebDriver driver1;
IWebDriver driver2;
IWebDriver driver3; 

[SetUp]
public void SetUp()
{
    driversByHandles = new Dictionary<string, IWebDriver>();

    driver1.Navigate().GoToUrl(Url);
    driversByHandles.Add(driver1.CurrentWindowHandle, driver1);

    driver2.Navigate().GoToUrl(Url);
    driversByHandles.Add(driver2.CurrentWindowHandle, driver2);

    ...
}

[Test]
public void Test()
{
    foreach(KeyValuePair<string, IWebDriver> entry in driversByHandles)
    {
        if (entry.Key.equals(targetHandle))
        {
            entry.Value.SwitchTo().Window(entry.Key);
        }
    }
}

暫無
暫無

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

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