如何在 selenium 自动化测试期间模拟离线互联网连接,然后使用 BrowserMobProxy 再次打开它?

问题描述

我遇到了一个问题,在某些 ui 测试用例中,我需要模拟离线互联网连接。 我一直在使用 browserMobProxy 通过 abort() 方法关闭它,但我找不到再次打开互联网的方法方法 start() 不起作用,因为它说代理服务器已经启动,所以我必须创建 browserMobProxy 的新实例,这在测试执行的这个阶段无法完成。

有没有其他方法可以重新打开互联网?

这是一些Java代码

browserMobProxy proxy = new browserMobProxyServer();
proxy.start();

Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxy);

DesiredCapabilites capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.PROXY,seleniumProxy);

WebDriver driver = new ChromeDriver(capabilities);

// some test logic here

proxy.abort();

// some assertions here

proxy.start(); // does not work to switch on internet connection

// some assertion here

谢谢

解决方法

  1. 手动设置新的 chrome 配置文件,该配置文件将无法连接任何网站(错误的代理设置,等等)
  2. 使用新的 chrome 配置文件创建 WebDriver 的新实例,如下所示 https://www.edureka.co/community/80815/how-to-open-chrome-default-profile-with-selenium
  3. 在您的测试中只使用所需的 WebDriver 实例,两者可以同时打开

像这样:

// besides other imports gonna need this
import org.openqa.selenium.chrome.ChromeOptions;

// standard instance
System.setProperty("webdriver.chrome.driver","your chromedriver.exe path");
WebDriver driver = new ChromeDriver();

// new instance for offline tests
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=PROFILE FOLDER"); // will be similar to "C:/Users/user_name/AppData/Local/Google/Chrome/User Data"
options.addArguments("--start-maximized");
WebDriver driver2 =  new ChromeDriver(options);

driver.get("some test URL");
WebElement e = driver.findElement(By.(Id("FOO")));
driver2.get("some test URL");
WebElement e2 = driver.findElement(By.(Id("BAR")));

// some JUnit test or whatever
assert.equals(e.getText(),e2.getText());

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...