106.md 5.5 KB
Newer Older
W
wizardforcel 已提交
1
# 9e。 WebDriver – 用于启动其他浏览器的代码示例
W
init  
wizardforcel 已提交
2 3 4

> 原文: [https://javabeginnerstutorial.com/selenium/9e-webdriver-code-launching-browsers/](https://javabeginnerstutorial.com/selenium/9e-webdriver-code-launching-browsers/)

W
wizardforcel 已提交
5
如果您只能使用 Selenium(即 Firefox)在一个浏览器中自动化测试,但您的 Web 应用也支持 Chrome 和 IE,该怎么办? 这意味着所有三个浏览器都需要测试! 如果是这种情况,那么 Selenium 就像把头埋在沙子里一样有用。
W
init  
wizardforcel 已提交
6

W
wizardforcel 已提交
7
哦,不要惊慌! 我们的统治冠军 WebDriver 在这里为我们提供帮助。 这是我们今天的主题。 让我们潜入吧!
W
init  
wizardforcel 已提交
8

W
wizardforcel 已提交
9
**第 1 步**:首先! 让我们下载所需的可执行文件。 转到“`www.seleniumhq.org/download`”。
W
init  
wizardforcel 已提交
10

W
wizardforcel 已提交
11 12
*   `InternetExplorerDriver`在“Internet Explorer 驱动程序服务器”部分下可用。
*   `ChromeDriver``OperaDriver``SafariDriver`位于“第三方浏览器驱动程序”部分下。
W
init  
wizardforcel 已提交
13

W
wizardforcel 已提交
14
在本文中,我们将仅讨论`InternetExplorerDriver``ChromeDriver`。 设置其他浏览器也应遵循类似的步骤。
W
init  
wizardforcel 已提交
15 16 17

![Browser download](img/10655a5d16771e9ca93d13474f7932c7.png)

W
wizardforcel 已提交
18
**步骤 2**:下载可执行文件后,解压缩并将它们保存在所需的路径中。 我在 Eclipse IDE 的项目中创建了一个名为“浏览器驱动程序”的文件夹(右键单击“包 -> 新建 -> 文件夹”),并复制了下载的文件以便于访问。
W
init  
wizardforcel 已提交
19

W
wizardforcel 已提交
20
**步骤 3**:现在,让我们通过右键单击“包-> 新建 -> 类”并将它们命名为“`HelloWorld_IE.java`”,创建两个新类。 和“`HelloWorld_Chrome.java`”。
W
init  
wizardforcel 已提交
21 22 23 24 25

包浏览器窗格现在如下所示,

![Eclipse window](img/ebd69f7cfb885357926bbf804e51ae73.png)

W
wizardforcel 已提交
26
让我们考虑一个非常简单的情况,因为我们的主要目标是查看是否可以启动 IE 和 Chrome 浏览器,
W
init  
wizardforcel 已提交
27

W
wizardforcel 已提交
28
1.  根据测试用例打开 IE / Chrome 浏览器。
W
wizardforcel 已提交
29
2.  导航到“<https://www.google.com/>
W
wizardforcel 已提交
30
3.  在控制台中显示“`Hello World`消息。
W
init  
wizardforcel 已提交
31 32
4.  关闭浏览器。

W
wizardforcel 已提交
33
**首先让我们看看“`HelloWorld_IE.java`”类的代码**
W
init  
wizardforcel 已提交
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60

```java
package com.blog.tests;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;

public class HelloWorld_IE {

	public static void main(String[] args){
		//System property set up
		System.setProperty("webdriver.ie.driver", "browser-   drivers\\IEDriverServer.exe");
		//Create a new instance for the class InternetExplorerDriver
		//that implements WebDriver interface
		WebDriver driver = new InternetExplorerDriver();
		//Assign the URL to be invoked to a String variable
		String baseUrl = "https://www.google.com";
		//Open baseUrl in IE browser window
		driver.get(baseUrl);
		//Print the message to console
		System.out.println("Hello World!");
		//Close the IE browser
		driver.quit();
	}
} 
```

W
wizardforcel 已提交
61
如果注意到的话,此代码与我们在上一篇文章“**第一个测试脚本 – 通过启动 Firefox**”中看到的代码非常相似。
W
init  
wizardforcel 已提交
62 63 64 65 66 67 68

这些其他浏览器需要设置系统属性,因为不支持直接启动该属性。

```java
System.setProperty("webdriver.ie.driver", "browser-drivers\\IEDriverServer.exe");
```

W
wizardforcel 已提交
69
要求驱动程序可执行文件“`IEDriverServer.exe`”的路径必须由“`webdriver.ie.driver`”系统属性设置。 指定在系统中相应保存可执行文件的路径。
W
init  
wizardforcel 已提交
70

W
wizardforcel 已提交
71
为了实例化 IE 浏览器,需要进行的另一项主要更改是,
W
init  
wizardforcel 已提交
72 73 74 75 76

```java
WebDriver driver = new InternetExplorerDriver();
```

W
wizardforcel 已提交
77
键入此语句后,“`WebDriver`”和“`InternetExplorerDriver()`”下方会出现一条波浪线。 悬停时,日食将建议所有可能的快速修复。 单击建议导入相应程序包的第一个修复程序。
W
init  
wizardforcel 已提交
78 79 80 81 82 83

```java
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
```

W
wizardforcel 已提交
84
根据提供的注释,以下代码看起来很不言自明。 IE 浏览器启动后,它便导航到 google 页面,将“`Hello World`”消息打印到控制台并关闭浏览器窗口。
W
init  
wizardforcel 已提交
85 86 87 88 89

执行此测试后的控制台窗口如下所示,

![Eclipse console](img/80b565da3a0417d5f513219c7b3d81dc.png)

W
wizardforcel 已提交
90
**`HelloWorld_Chrome.java`**类的代码,
W
init  
wizardforcel 已提交
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117

```java
package com.blog.tests;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class HelloWorld_Chrome {

	public static void main(String[] args) {
		// System property set up
		System.setProperty("webdriver.chrome.driver", "browser-drivers\\chromedriver.exe");
		// Create a new instance for the class ChromeDriver
		// that implements WebDriver interface
		WebDriver driver = new ChromeDriver();
		// Assign the URL to be invoked to a String variable
		String baseUrl = "https://www.google.com";
		// Open baseUrl in IE browser window
		driver.get(baseUrl);
		// Print the message to console
		System.out.println("Hello World!");
		// Close the IE browser
		driver.quit();
	}
}
```

W
wizardforcel 已提交
118
如果将此代码与“`HelloWorld_IE.java`”进行比较,则只有两个值得注意的变化。
W
init  
wizardforcel 已提交
119 120

1.  系统属性设置
W
wizardforcel 已提交
121
2.  `ChromeDriver`类实例化
W
init  
wizardforcel 已提交
122

W
wizardforcel 已提交
123
因此,我们可以得出结论,通过指定相应的系统属性并提供准确的驱动程序类实例化,可以借助 WebDriver 轻松启动和自动化相应的浏览器。
W
init  
wizardforcel 已提交
124

W
wizardforcel 已提交
125
在执行 Chrome 浏览器的代码后,控制台窗口如下所示,
W
init  
wizardforcel 已提交
126 127 128

![ConsoleOutput](img/dc6554a9843a4bed5594a69c7ae71c0d.png)

W
wizardforcel 已提交
129
我猜想,WebDriver 终于慢慢地在阳光下崭露头角了! 如果您在启动各种浏览器时遇到任何问题,欢迎大家在评论部分中表达自己的意见。
W
init  
wizardforcel 已提交
130 131 132

在那之前,在另一篇文章中再见! 祝你今天愉快!