硒测试,在测试期间关闭浏览器连接并再次打开

时间:2015-05-19 08:58:14

标签: java selenium

我正在使用Selenium Webdriver(Java)运行测试,并且在测试的一半时间我想将浏览器设置为脱机,执行几个步骤并再次打开浏览器连接。有没有一种简单的方法可以做到这一点,或者可能将浏览器代理更改为不存在的(离线模拟)并重新设置为有效的内容?我需要在线,离线和在线之间保持浏览器缓存,浏览器本地存储区域和浏览器cookie。

由于

3 个答案:

答案 0 :(得分:1)

您可以通过将WebDrivers PageLoadTimeout设置为零来伪造它。

在C#中,这对我有用:

driver.Manage().Timeouts().SetPageLoadTimeout(new TimeSpan(0));

我在Java中猜测它会是这样的:

driver.manage().timeouts().pageLoadTimeout(0, TimeUnit.SECONDS);

完成此操作后,您可以将其恢复至30秒或某些内容,因为某些帖子已指示默认值为。

pageLoadTimeout的来源:https://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/WebDriver.Timeouts.html

默认时间:https://sqa.stackexchange.com/questions/2606/what-is-seleniums-default-timeout-for-page-loading

答案 1 :(得分:1)

如果你正在使用java和Windows 7那么你可以调用cmd并通过发布来关闭网络并使用/ renew来打开网络。这个对我有用 。   Process p = Runtime.getRuntime().exec("cmd /c ipconfig /release");
p = Runtime.getRuntime().exec("cmd /c ipconfig /renew");

答案 2 :(得分:0)

我正在努力解决这个问题。

如果你愿意超越硒,那么chrome-remote-interface可能会买单。

以下是相关的代码段

const CDP = require('chrome-remote-interface');
const fs = require('fs');

CDP(async (client) => {
    function setOffline(){
      return Network.emulateNetworkConditions({offline: true,
          latency: 100,
              downloadThroughput: 750 * 1024 / 8,
              uploadThroughput: 250 * 1024 / 8});
    }

    const {Page, Network} = client;
    try {
        await Page.enable();
        await Network.enable();
        await setOffline();
        await Page.navigate({url: 'https://github.com'});
        await Page.loadEventFired();
        const {data} = await Page.captureScreenshot();
        fs.writeFileSync('scrot.png', Buffer.from(data, 'base64'));
    } catch (err) {
        console.error(err);
    } finally {
        await client.close();
    }
}).on('error', (err) => {
    console.error(err);
});