Java编程语言下 Selenium 驱动各个浏览器代码
这里采用的是Selenium3.7版本,首先介绍的是在Windows环境下运行的;
总结下注意事项:
1,设置各个浏览器的Driver路径
System.setProperty("","");
2,创建一个浏览器对象
WebDriver driver = new xxx();
1. 驱动IE浏览器
IE浏览器的驱动有32位和64位,两个版本,建议使用32的IEdriver,因为64位的IE driver 跑起来实在太慢了。
注意IE的保护模式,在各个状态下,全部禁用。如下截图,4个模式下,保护模式全部不勾选。
1 package base;
2
3 import java.util.concurrent.TimeUnit;
4 import org.openqa.selenium.WebDriver;
5 import org.openqa.selenium.ie.InternetExplorerDriver;
6
7 public class TestIEDriver {
8
9 public static void main(String args[]) throws InterruptedException {
10
11 System.setProperty("webdriver.ie.driver", ".\\Tools\\IEDriverServer.exe");
12 WebDriver driver = new InternetExplorerDriver();
13 driver.manage().window().maximize();
14 driver.get("http://www.baidu.com");
15 String s = driver.getTitle();
16 System.out.print(s);
17 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
18 Thread.sleep(1000);
19 driver.close();
20
21 }
22 }
2. 驱动Chrome浏览器
1 package base;
2
3 import java.util.Arrays;
4 import java.util.concurrent.TimeUnit;
5
6 import org.openqa.selenium.WebDriver;
7 import org.openqa.selenium.chrome.ChromeDriver;
8 import org.openqa.selenium.chrome.ChromeOptions;
9 import org.openqa.selenium.remote.DesiredCapabilities;
10
11 public class TestChromeDriver {
12
13 public static void main(String args[]) throws InterruptedException {
14
15 System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");
16 ChromeOptions options = new ChromeOptions();
17 DesiredCapabilities capabilities = DesiredCapabilities.chrome();
18 capabilities.setCapability("chrome.switches", Arrays.asList("--start-maximized"));
19 options.addArguments("--test-type", "--start-maximized");
20 WebDriver driver = new ChromeDriver(options);
21 driver.get("http://www.baidu.com");
22
23 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
24 Thread.sleep(1000);
25 driver.close();
26
27 }
28
29 }
3. 驱动火狐FireFox浏览器
1 package base;
2
3 import java.util.concurrent.TimeUnit;
4
5 import org.openqa.selenium.WebDriver;
6 import org.openqa.selenium.firefox.FirefoxDriver;
7
8 public class TestFireFoxDriver {
9
10 public static void main(String args[]) throws InterruptedException {
11
12 System.setProperty("webdriver.Firefox.driver", ".\\Tools\\geckodriver.exe");
13 WebDriver driver = new FirefoxDriver();
14 driver.manage().window().maximize();
15 driver.get("http://www.baidu.com");
16 String s = driver.getTitle();
17 System.out.print(s);
18 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
19 Thread.sleep(1000);
20 driver.close();
21
22 }
23
24 }
浏览器驱动的下载地址
http://npm.taobao.org/mirrors/chromedriver/
http://chromedriver.storage.googleapis.com/index.html
https://github.com/mumuy/data_location
常见的错误汇总
1. org.openqa.selenium.remote.SessionNotFoundException: Unexpected error launching Internet Explorer. Browser zoom level was set to 75%. It should be set to 100% (WARNING: The server did not provide any stacktrace information)
ie浏览器显示百分比,需要调节到100%
2. org.openqa.selenium.ElementNotVisibleException: The point at which the driver is attempting to click on the element was not scrolled into the viewport. (WARNING: The server did not provide any stacktrace information)
不同设备,窗口大小问题,页面没有显示全,需要向下滚动
3.org.openqa.selenium.SessionNotCreatedException: session not created exception: Chrome version must be >= 66.0.3359.0
Chrome浏览器驱动版本不匹配的问题,需要查询目前chrome版本,下载匹配的驱动
4.No such Element Exception
元素定位的方式有误,原因:页面源码改动
原因: 元素还不是可用的状态
原因: 出现弹窗