• Selenium Video Tutorials

Selenium WebDriver - 浏览器选项



浏览器选项指的是所有浏览器共享的功能和能力。它有助于在任何浏览器上运行自动化测试时修改浏览器的设置和功能。默认情况下,Selenium Webdriver 从一个新的浏览器配置文件开始,没有任何关于 Cookie、历史记录等的预定义设置。

向浏览器添加扩展程序

让我们举一个例子,我们将使用 **ChromeOptions** 类启动带有 Selenium IDE 扩展程序的 Chrome 浏览器。每个 Chrome 扩展程序都应该有一个 .crx 文件。在这里,我们将获取 Selenium IDE Chrome 扩展程序的 .crx 文件,并将其存储在项目中的 Resources 文件夹中。

Selenium Browser Options 1

示例

package org.example; import org.openqa.selenium.*; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import java.io.File; import java.util.concurrent.TimeUnit; public class ChromeOptns { public static void main(String[] args) throws InterruptedException { // object of ChromeOptions class ChromeOptions opt = new ChromeOptions(); // adding .crx extension opt.addExtensions(new File("./Resources/SeleniumIDE.crx")); // Initiate the Chrome Webdriver WebDriver driver = new ChromeDriver(opt); // adding implicit wait of 10 secs driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); // Opening the webpage with Selenium IDE extension driver.get("https://tutorialspoint.com/selenium/practice/register.php"); } }

输出

Process finished with exit code 0

在这里,我们观察到 Chrome 浏览器启动了 Selenium IDE 扩展程序,并且信息栏显示 **Chrome 正在被自动化测试软件控制**。

Selenium Browser Options 2

最后,我们收到消息 **进程已完成,退出代码为 0**,表示代码成功执行。

以无头模式打开浏览器

在这个例子中,我们将使用 **EdgeOptions** 类在无头浏览器中启动一个应用程序。

package org.example; import org.openqa.selenium.*; import org.openqa.selenium.edge.EdgeDriver; import org.openqa.selenium.edge.EdgeOptions; import java.io.File; import java.util.List; import java.util.concurrent.TimeUnit; public class EdgeHeadless { public static void main(String[] args) throws InterruptedException { // object of EdgeOptions FirefoxOptions opt = new EdgeOptions(); // browser in headless mode opt.addArguments("--headless=new"); // Initiate the Webdriver WebDriver driver = new EdgeDriver(opt); // adding implicit wait of 10 secs driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); // Opening the webpage with headless mode driver.get("https://tutorialspoint.com/selenium/practice/selenium_automation_practice.php"); // getting page title System.out.println("Getting the page title: " + driver.getTitle()); // Quit browser driver.quit(); } }

它将显示以下输出:

Getting the page title: Selenium Practice - Student Registration Form

在上面的示例中,我们观察到 Edge 浏览器以 **无头** 模式启动。我们还在控制台中获得了浏览器标题和消息 - **获取页面标题:Selenium 实践 - 学生注册表单**。

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

在浏览器中创建配置文件

让我们再举一个例子,我们将使用 **FirefoxOptions** 类在浏览器上拥有 Firefox 配置文件。

package org.example; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxOptions; import org.openqa.selenium.firefox.FirefoxProfile; import org.openqa.selenium.firefox.ProfilesIni; import java.util.concurrent.TimeUnit; public class FirefoxProfile { public static void main(String[] args) throws InterruptedException { // object of FirefoxOptions class FirefoxOptions opt = new FirefoxOptions(); // object of ProfilesIni ProfilesIni prof = new ProfilesIni(); // get profile FirefoxProfile p = prof.getProfile("<profileName>"); opt.setProfile(p); // Initiate the Webdriver WebDriver driver = new FirefoxDriver(opt); // adding implicit wait of 20 secs driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); // Opening the webpage driver.get("https://tutorialspoint.com/selenium/practice/selenium_automation_practice.php"); // obtain page title System.out.println("Obtain the page title: " + driver.getTitle()); // Quit browser driver.quit(); } }

它将显示以下输出:

Obtain the page title: Selenium Practice - Student Registration Form

在这里,Firefox 浏览器使用创建的配置文件打开。我们还在控制台中获得了浏览器标题和消息 - **获取页面标题:Selenium 实践 - 学生注册表单**。

处理 Edge 中的 SSL 证书错误

为了克服 Edge 浏览器中的 SSL 证书错误,我们将使用 EdgeOptions 和 DesiredCapabilities 类。

package org.example; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.EdgeDriver; import org.openqa.selenium.firefox.EdgeOptions; import org.openqa.selenium.remote.CapabilityType; import org.openqa.selenium.remote.DesiredCapabilities; import java.util.concurrent.TimeUnit; public class SSLEdge { public static void main(String[] args) throws InterruptedException { // object of Desired Capabilities class DesiredCapabilities dc = new DesiredCapabilities(); dc.setCapability(CapabilityType.ACCEPT_INSECURE_CERTS, true); // object Edge Options class EdgeOptionsOptions opt = new EdgeOptions(); opt.merge(dc); // Initiate the Webdriver along with options WebDriver driver = new EdgeDriver(opt); // adding implicit wait of 5 secs driver.manage().timeouts().implicitlyWait(55, TimeUnit.SECONDS); // launch application with SSL certificate error driver.get("https://expired.badssl.com"); // get browser title System.out.println("Get Browser title in Edge: " + driver.getTitle()); // quit the browser driver.quit(); } }

它将显示以下输出:

Get Browser title in Edge: Privacy error

在这里,我们摆脱了 Edge 中的 SSL 证书错误并启动了应用程序。然后在控制台中获得了浏览器标题和消息 - **Edge 中的浏览器标题:隐私错误**。

页面加载策略

浏览器中有多种页面加载策略可用,分别是 NORMAL(浏览器中的默认页面加载设置)、EAGER 和 NONE。

package org.example; import org.openqa.selenium.*; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; public class ChromePageLoadNormal { public static void main(String[] args) throws InterruptedException { // object of ChromeOptions ChromeOptions opt = new ChromeOptions(); // setting pageloadStrategy to normal opt.setPageLoadStrategy(PageLoadStrategy.NORMAL); // Initiate the Webdriver WebDriver driver = new ChromeDriver(opt); // Opening the webpage driver.get("https://tutorialspoint.com/selenium/practice/register.php"); // quit browser driver.quit(); } }

它将显示以下输出:

Process finished with exit code 0

在上面的示例中,我们设置了浏览器选项,使页面加载策略设置为 NORMAL。如果需要将页面加载策略设置为 EAGER,则需要进行以下代码更改:

// object of ChromeOptions ChromeOptions opt = new ChromeOptions(); // setting pageloadStrategy to EAGER opt.setPageLoadStrategy(PageLoadStrategy.EAGER); // Initiate the Webdriver WebDriver driver = new ChromeDriver(opt);

如果需要将页面加载策略设置为 NONE,则需要进行以下代码更改:

// object of ChromeOptions ChromeOptions opt = new ChromeOptions(); // setting pageloadStrategy to NONE opt.setPageLoadStrategy(PageLoadStrategy.NONE); // Initiate the Webdriver WebDriver driver = new ChromeDriver(opt);

结论

本教程全面介绍了 Selenium Webdriver 浏览器选项。我们已经通过示例演示了如何向浏览器添加配置文件和扩展程序,如何在无头模式下启动浏览器,如何处理 SSL 证书错误以及如何使用浏览器选项和 Selenium Webdriver 进行页面加载策略。这使您能够深入了解 Selenium Webdriver 中的浏览器选项。明智的做法是不断练习您所学到的知识,并探索与 Selenium 相关的其他知识,以加深您的理解并拓宽您的视野。

广告