【selenium3+JAVA】界⾯⾃动化测试教程(⼀)——浏览器的启动之chrome
浏览器的启动
⼀、环境
1. 本机安装jdk1.8
2. 本机安装eclipse
3. eclipse添加maven组件
4. 新建maven⼯程并在l中添加如下字段:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.14.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>3.14.0</version>
</dependency>
⼆、启动chrome浏览器
启动chrome浏览器需要chromedriver,故在使⽤前需要先down下来此driver,⽽后再在代码中启动浏览器;
1、获取chromeDriver
2、启动chrome
由ChromeDriver类的源代码可知,chrome实例其实是由ChromeDriverService来创建的,源码如下:
public ChromeDriver(){
ateDefaultService(),new ChromeOptions());
}
查看ChromeDriverService代码发现需要设定的driver的名称如下所⽰:
/**
System property that defines the location of the chromedriver executable that will be used by
the {@link #createDefaultService() default service}.
*/
public static final String CHROME_DRIVER_EXE_PROPERTY ="webdriver.chrome.driver";
即为webdriver.chrome.driver;
在创建chrome实例前必须添加代码
System.setProperty("webdriver.chrome.driver",driverPath);
(1)简单的chrome启动实例如下:
public static void main( String[] args )
{
System.setProperty("webdriver.chrome.driver","D:\\test\\driver\\");
WebDriver driver =new ChromeDriver();
<("www.baidu/");
}
结果是可以正常启动浏览器的;
(2)chrome定制启动之带ChromeOptions
简单代码如下:
public static void main( String[] args )
{
System.setProperty("webdriver.chrome.driver","D:\\test\\driver\\");
ChromeOptions options =new ChromeOptions();
WebDriver driver =new ChromeDriver(options);
<("www.baidu/");
}
其中ChromeOptions⽤于添加⼀些chrome启动时的常见参数,如:
options.addArguments("--test-type");
其⽀持的功能如下;
1、添加启动参数,即使⽤⽅法addArguments();
2、设置chrome⼆进制⽂件位置,使⽤⽅法setBinary();
3、添加扩展应⽤,使⽤⽅法addExtensions(paths)或者
addEncodedExtensions(encoded);
4、添加代理,使⽤放⽅法setProxy(proxy);
5、添加chrome设置,使⽤⽅法:
options.setExperimentalOption("prefs", prefs);;
下⾯⼀⼀介绍这些功能;
1、添加启动参数
如下为⼀些常⽤的chrome启动参数:
–user-data-dir=”[PATH]” 指定⽤户⽂件夹User Data路径,可以把书签这样的⽤户数据保存在系统分区以外的分区。 –disk-cache-dir=”[PATH]“ 指定缓存Cache路径
–disk-cache-size= 指定Cache⼤⼩,单位Byte
–first run 重置到初始状态,第⼀次运⾏
–incognito 隐⾝模式启动
–disable-javascript 禁⽤Javascript
–omnibox-popup-count=”num” 将地址栏弹出的提⽰菜单数量改为num个。
–user-agent=”xxxxxxxx” 修改HTTP请求头部的Agent字符串,可以通过about:version页⾯查看修改效果
–disable-plugins 禁⽌加载所有插件,可以增加速度。可以通过about:plugins页⾯查看效果
–disable-javascript 禁⽤JavaScript,如果觉得速度慢在加上这个
–disable-java 禁⽤java
–start-maximized 启动就最⼤化
–no-sandbox 取消沙盒模式
–single-process 单进程运⾏
–process-per-tab 每个标签使⽤单独进程
–process-per-site 每个站点使⽤单独进程
–in-process-plugins 插件不启⽤单独进程
–disable-popup-blocking 禁⽤弹出拦截
如何启用javascript功能–disable-plugins 禁⽤插件
–disable-images 禁⽤图像
–incognito 启动进⼊隐⾝模式
–enable-udd-profiles 启⽤账户切换菜单
–proxy-pac-url 使⽤pac代理 [via 1/2]
–lang=zh-CN 设置语⾔为简体中⽂
–disk-cache-dir ⾃定义缓存⽬录
–disk-cache-size ⾃定义缓存最⼤值(单位byte)
–media-cache-size ⾃定义多媒体缓存最⼤值(单位byte)
–bookmark-menu 在⼯具栏增加⼀个书签按钮
–enable-sync 启⽤书签同步
–single-process 单进程运⾏Google Chrome
–start-maximized 启动Google Chrome就最⼤化
–disable-java 禁⽌Java
–no-sandbox ⾮沙盒模式运⾏
常⽤启动参数及范例:
1、以中⽂utf-8编码格式启动浏览器:
options.addArguments("--lang=zh_CN.UTF-8");
WebDriver driver =new ChromeDriver(options);
2、模拟iphone⼿机:
ChromeOptions options =new ChromeOptions();
options.addArguments("user-agent=\"Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mo bile/13B143 Safari/601.1\"");
WebDriver driver =new ChromeDriver(options);
3、使⽤⽤户浏览器设置
ChromeOptions options =new ChromeOptions();
options.addArguments("--user-data-dir=C:/Users/user_name/AppData/Local/Google/Chrome/User Data");
WebDriver driver =new ChromeDriver(options);
其中user_name为本机使⽤⽤户名称,由于测试⽤chrome安装在默认位置,故路径为代码所⽰地址;
此参数⽤于有时候我们使⽤chrome 浏览器做⾃动化时⼀些设置⽆法在代码中进⾏配置,故需要使⽤⾃定义设置的浏览器配置来启动的情况;
需要注意的事此时运⾏启动chrome浏览器需要把现有的chrome浏览器关掉才可以运⾏,不然会报错,否则则会启动⼀个全新的浏览器; 4、设置浏览器最⼤化:
ChromeOptions options =new ChromeOptions();
options.addArguments("--start-maximized");
WebDriver driver =new ChromeDriver(options);
其实此处⽆必要,直接在代码中设置最⼤化即可,不建议使⽤;
5、ChromeDriver设置忽略 Chrome 浏览器证书错误报警提⽰:
ChromeOptions options =new ChromeOptions();
options.addArguments("--test-type","--ignore-certificate-errors");
WebDriver driver =new ChromeDriver(options);
此处也可以在代码中设置,不建议使⽤;
6、不打开GUI模式启动chrome
此功能对于chrome版本有要求,mac和linux要求59以上版本,⽽windows则要求60以上版本,且chromeDriver版本为2.30+;
ChromeOptions chromeOptions =new ChromeOptions();
chromeOptions.addArguments("--headless");
WebDriver driver =new ChromeDriver(chromeOptions);
在此模式下,运⾏的时候你不会看到新打开的浏览器,但是代码可以正常运⾏;
2、设置chrome⼆进制⽂件位置
此处⽤于设置的位置,⽤于chrome浏览器未安装在默认位置位置的情况,使⽤代码如下:
ChromeOptions options =new ChromeOptions();
options.setBinary("C:\\Program Files (x86)\\Google\\Chrome\\Application\\");
WebDriver driver =new ChromeDriver(options);
或者
ChromeOptions options =new ChromeOptions();
options.setBinary(new File("C:\\Program Files (x86)\\Google\\Chrome\\Application\\"));
WebDriver driver =new ChromeDriver(options);
3、添加扩展应⽤
如下代码所⽰,传⼊的是扩展程序的路径或者其File对象,或者多个扩展程序路径的File对象组成的列表;
options.addExtensions(new File("/path/"));
WebDriver driver =new ChromeDriver(options);
4、添加代理
此部分⽤于在需要添加代理才能打开某些⽹站的机器上使⽤;
代码如下:
ChromeOptions options =new ChromeOptions();
String proxyIpAndPort="localhost:8080";//代理地址
Proxy proxy =new Proxy();
proxy.setAutodetect(true);//是否⾃动检测代理设置;
proxy.setFtpProxy(proxyIpAndPort);//ftp代理地址
proxy.setHttpProxy(proxyIpAndPort);//http代理地址
proxy.setNoProxy(proxyIpAndPort);//⽆需代理的⽹址列表,⽤;分隔
proxy.setProxyAutoconfigUrl(proxyAutoconfigUrl);//代理⾃动设置地址
proxy.setProxyType(ProxyType.MANUAL);//⼿⼯代理,必填
proxy.setSocksPassword(password);//密码
proxy.setSocksUsername(username);//⽤户名
proxy.setSocksVersion(5);//添加此项会⾃动设置proxyType为ProxyType.MANUAL,此项设置内容为socks的版本,为4或者5,最新为5 proxy.setSslProxy(proxyIpAndPort);
options.setProxy(proxy);
WebDriver driver =new ChromeDriver(options);
(在之前的⼯作中有⽤到此项,但是不好⽤,还未研究完)
5、添加chrome设置
⽤于在chrome启动时添加⼀些chrome设置,使⽤范例为:
ChromeOptions options =new ChromeOptions();
Map<String, Object> prefs =new HashMap<String, Object>();
//设置提醒的设置,2表⽰block
prefs.put("profile.default_content_ifications",2);
//设置⾃动下载项,2表⽰不勾选,即可以直接下载多个⽂件⽽不询问
prefs.put("profile.default_content_setting_values.automatic_downloads",2);
options.setExperimentalOption("prefs", prefs);
WebDriver driver =new ChromeDriver(options);
如上所⽰,设置了两个内容设置,此部分对应于chrome的设置部分,但是key值⽆法在chrome界⾯上和设置项对应起来,到chrome⾥的设置项和其对应的key和value的⽅法如下:
以设置⾃动下载多个⽂件⽽不询问为例:
⾸先先在chrome的设置中去勾选掉默认勾选的此项,如下:
然后进⼊chrome浏览器的设置⽬录,如下:
打开Preferences⽂件,可以在⾥边到对应该项的设置,此处需要⾃⼰根据名称进⾏寻了,如下所⽰就是刚刚修改了设置后新增的部分(如果是默认设置这个⽂件⾥是不显⽰的):
所以,在代码中添加key值为
profile.default_content_setting_values.automatic_downloads
value为2即可;
(3)chrome定制启动之带Capability
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论