【2. 测试 FireFox】
Selenium 初是在 FireFox 上做起来的插件,所以我们先来搭建 FireFox 的环境。
确保你正确安装了 FireFox 后,可以直接编写 java 代码测试喽。
在 lesson1 目录下建立 ExampleForFireFox.java
(因为国内不少朋友访问 google 的时候会出问题,所以我把代码中的 google 变成 baidu 了)
01 packagelesson1;
02
03 importorg.openqa.selenium.By;
04 importorg.openqa.selenium.WebDriver;
05 importorg.openqa.selenium.WebElement;
06 importorg.openqa.selenium.firefox.FirefoxDriver;
07 importorg.openqa.selenium.support.ui.ExpectedCondition;
08 importorg.openqa.selenium.support.ui.WebDriverWait;
09
10 publicclassExampleForFireFox {
11 publicstaticvoidmain(String[] args) {
12 // 如果你的 FireFox 没有安装在默认目录,那么必须在程序中设置
13 // System.setProperty("webdriver.firefox.bin", "D:\Program Files\Mozilla Firefox\firefox.exe");
14 // 创建一个 FireFox 的浏览器实例
15 WebDriver driver =newFirefoxDriver();
16
17 // 让浏览器访问 Baidu
18 driver.get("http://www.baidu.com");
19 // 用下面代码也可以实现
20 // driver.navigate().to("http://www.baidu.com");
21
22 // 获取 网页的 title
23 System.out.println("1 Page title is: "+ driver.getTitle());
24
25 // 通过 id 找到 input 的 DOM
26 WebElement element = driver.findElement(By.id("kw"));
27
28 // 输入关键字
29 element.sendKeys("zTree");
30
31 // 提交 input 所在的 form
32 element.submit();
33
34 // 通过判断 title 内容等待搜索页面加载完毕,间隔10秒
35 (newWebDriverWait(driver,10)).until(newExpectedCondition<Boolean>() {
36 publicBoolean apply(WebDriver d) {
37 returnd.getTitle().toLowerCase().endsWith("ztree");
38 }
39 });
40
41 // 显示搜索结果页面的 title
42 System.out.println("2 Page title is: "+ driver.getTitle());
43
44 //关闭浏览器
45 driver.quit();
46 }
47 }
普通情况下,直接运行代码可以看到会自动弹出 FireFox 窗口,访问 baidu.com,然后输入关键字并查询,一切都是自动完成的。
错误提醒:
1)Exception in thread "main" org.openqa.selenium.WebDriverException: Cannot find firefox binary in PATH. Make sure firefox is installed.
出现这个错误,是说明你的 FireFox 文件并没有安装在默认目录下,这时候需要在开始执行:System.setProperty 设置环境变量 "webdriver.firefox.bin" 将自己机器上 FireFox 的正确路径设置完毕后即可。
2)Exception in thread "main" org.openqa.selenium.UnsupportedCommandException: Bad request
出现这个错误,很有意思。 查了一下 有人说应该是 hosts 出现了问题,加上一个 127.0.0.1 localhost 行了,但我的 hosts 上肯定有这个玩意,为啥也会出现这个问题呢?
经过调试,发现 127.0.0.1 localhost 的设置必须要在 hosts 文件的开始,而且如果后面有其他设置后,也不要再出现同样的 127.0.0.1 localhost ,只要有会出错。(因为我为了方便访问 google 的网站,专门加入了 smarthosts 的内容,导致了 localhost 的重复)