全局实例化 WebDriver 时的 ChromeOptions - Java 中的 Selenium Webdriver

ChromeOptions when WebDriver is instantiated globally - Selenium Webdriver in Java

提问人:bsolidgold 提问时间:11/1/2023 更新时间:11/4/2023 访问量:35

问:

我有一个项目正在使用几种测试方法。我需要 WebDriver 在我实例化后和 ChromeOptions 在全球范围内可用。

我正在使用@Before注释进行大量设置,我认为我可以将 ChromeOptions 传递到全局实例化的 webdriver 中。'options.addArguments()' 在全局不可用,它无法识别我的选项。示例如下:

     public class classThatDoesStuff_Test {
        private static WebDriver driver = new ChromeDriver();
    
        @Before
        public void setUp() {
        System.setProperty("webdriver.chrome.driver",
            "C:\\Users\\TestUser\\Desktop\\SeleniumWorkspace\\ABC\\chromedriver.exe");
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--headless=new");
        options.addArguments("--window-size-1400,800");
        options.addArguments("--disable-gpu");
        }
        
        public void doStuff() {
        driver.get("http://foo.bar.com");
        
        }

运行此操作不会启动浏览器无头。

我尝试使用 ChromeOptions 创建一个方法并将其传递给驱动程序。那行不通

private static ChromeOptions options() {
            ChromeOptions options = new ChromeOptions();
            options.addArguments("--headless=new");
            options.addArguments("window-size=1400,800");
            options.addArguments("disable-gpu");
            
            return options;

然后将其传递给我的实例化。但这并没有奏效——正如您可能猜到的那样:)

java selenium-webdriver chrome-选项

评论

0赞 pcalkins 11/1/2023
您必须在创建驱动程序时传递选项。例如:new ChromeDriver(options);将新的 ChromeDriver 调用添加到设置方法的末尾,以便您可以使用这些选项。所以私有静态 WebDriver 驱动程序;然后 driver = new ChromeDriver(options) 创建选项后。

答:

0赞 Gulzhas Mailybayeva 11/2/2023 #1
private static WebDriver driver;

@Before
public void setUp() {
    System.setProperty("webdriver.chrome.driver",
            "C:\\Users\\TestUser\\Desktop\\SeleniumWorkspace\\ABC\\chromedriver.exe");
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--remote-allow-origins=*", "ignore-certificate-errors");
    options.addArguments("--headless=new");
    options.addArguments("--window-size-1400,800");
    driver = new ChromeDriver(options); // missing to pass chrome options here

}

评论

0赞 Community 11/3/2023
您的答案可以通过其他支持信息进行改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。