Webdriver 启动Chrome浏览器时,默认是打开一个新用户,而非默认用户。即新用户没有我们安装扩展程序。但在实际应用中,我们会须要 默认用户安装的一些扩展程序,比方对于某些js或者css样式。须要代理才干訪问成功,使用默认用户就显得尤为重要(由于你不可能在新用户在安装扩展程序再继续測试)。

如图:

a)默认用户的扩展:





在锁定chrome的任务栏打开的状态:

b) WebDriver打开的新用户的扩展:



watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGlhbnd1eWEyMTc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">



在锁定chrome的任务栏打开的状态:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGlhbnd1eWEyMTc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

-----------------------------------------------------------------正文------------------------------------------------------------------------

版本号说明:Selenium 2.0

Chrome: 34.0.1847.116 m

系统:Windows 7 x86

解决的方法:

//设置Webdriver启动chrome为默认用户的配置信息(包含书签、扩展程序等)
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为 你计算机的username。

ps:网上搜的答案好多是  在路径 User_Data又加入了一个default,但经过我測试是打开的chrome仍然是新用户。

附參考代码:

说明:

(1)请保证chromedriver路径正确;

(2) status.html 中不走代理的话 js:src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" 是无法载入成功;js载入成功,则页面的radio为选中状态。

(3)保证代理设置正常。

Browser_Chrome.java

package test;
import org.testng.annotations.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
public class Browser_Chrome {
@Test
public void test() throws InterruptedException{
System.setProperty("webdriver.chrome.driver", "D:/SETEST/selenium/chromedriver.exe");
//设置Webdriver启动chrome为默认用户的配置信息(包含书签、扩展程序等)
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=C:/Users/test/AppData/Local/Google/Chrome/User Data");
WebDriver driver = new ChromeDriver(options); driver.get("D:/SETEST/selenium/status-test.html");
WebElement radio = driver.findElement(By.name("radio"));
((JavascriptExecutor)driver).executeScript("$('#radio').click();");
System.out.println(radio.isSelected());
Thread.sleep(2000);
//driver.close();
//driver.quit();
}
}

status-test.html

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>status</title>
<script type="text/javascript" async="" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" />
<body>
<h3>status</h3>
<div class="row-fluid">
<div class="span3">
<input name="user" placeholder="Disabled TextField" disabled />
</div>
<div class="span3">
<a class="btn disabled">Disabled Button</a>
</div>
<div class="span3">
<input name="radio" type="radio" id="radio" />
<input name="display" style="display:none" />
</div>
</div>
</body>
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
</html>

执行截图(注意扩展程序 和 radio的选中状态——F12开发人员工具——能够直接訪问js脚本)

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGlhbnd1eWEyMTc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGlhbnd1eWEyMTc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

--------------------------------------------------------------------------------------------------------------------------------------------------------

附打开新用户chrome载入失败的code和截图:

Browser_Chrome.java(载入失败的code)

package test;
import org.testng.annotations.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class Browser_Chrome {
@Test
public void test() throws InterruptedException{
System.setProperty("webdriver.chrome.driver", "D:/SETEST/selenium/chromedriver.exe");
WebDriver driver = new ChromeDriver(); driver.get("D:/SETEST/selenium/status-test.html");
WebElement radio = driver.findElement(By.name("radio"));
((JavascriptExecutor)driver).executeScript("$('#radio').click();");
System.out.println(radio.isSelected());
Thread.sleep(2000);
//driver.close();
//driver.quit();
}
}

执行截图(载入失败。js打开为空):

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGlhbnd1eWEyMTc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

參考:链接1

设置Webdriver启动chrome为默认用户的配置信息的更多相关文章

  1. selenium webdriver启动Chrome浏览器后无法输入网址的解决办法

    通过selenium webdriver启动Chrome浏览器,脚本如下: from selenium import webdriver browser = webdriver.Chrome() br ...

  2. 【记录】【3】设置bing为chrome的默认搜索引擎

    方法:设置→搜索→管理搜索引擎→其他搜索引擎→设置bing搜索的网址为  http://cn.bing.com/search?q=%s 注:search?q=%s   是必须的,否则无法将其设置为默认 ...

  3. 【Selenium专题】WebDriver启动Chrome浏览器(二)

    官方API Constructor Summary ChromeDriver() Creates a new ChromeDriver using the default server configu ...

  4. 【Selenium专题】WebDriver启动Chrome浏览器(一)

    selenium操作chrome浏览器需要有ChromeDriver驱动来协助.一.什么是ChromeDriver?ChromeDriver是Chromium team开发维护的,它是实现WebDri ...

  5. webdriver 启动chrome时加载配置

    Selenium操作浏览器是不加载任何配置的,网上找了半天,关于Firefox加载配置的多点,Chrome资料很少,下面是关于加载Chrome配置的方法:  一.加载所有Chrome配置 用Chrom ...

  6. 设置Anaconda启动jupyter的默认目录

    要解决的问题:安装好Anaconda后打开jupyter总是会自动跳到c:下的用户目录,通过以下方法可以修改其默认打开的目录 吐槽:竟然没有设置默认打开目录的选项,只能通过修改配置文件完成,让人不爽. ...

  7. 设置vue启动项目后默认显示的页面

    通过配置路由,可以设置vue项目启动后默认显示的页面.路由的path设置为path:"/",启动项目后就会显示默认的组件页面. import Vue from 'vue' impo ...

  8. python3批量统计用户电脑配置

    最近领导想统计一下用户电脑配置信息.好几百人难道让我一个一个的去弄吗? 想想还是写个程序接收一下吧. 客户端 # -*- coding: utf-8 -*- #author:Guoyabin impo ...

  9. selenium启动Chrome时,加载用户配置文件

    selenium启动Chrome时,加载用户配置文件   Selenium操作浏览器是不加载任何配置的,网上找了半天,关于Firefox加载配置的多点,Chrome资料很少,下面是关于加载Chrome ...

随机推荐

  1. Linux下Makefile的automake生成全攻略

    作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的M ...

  2. HDU 3723

    把向上看成+1,向下看成-1.可以知道符合卡特兰数的一般解释了.记作Can(i) 中间平过的即是0.亦即是C(n,2*i),i表示向上的数. 于是总的就是sum(C(n,2*i)*Can(i)),i从 ...

  3. java文件对照工具

    今天想比較一下两个java文件.这两个文件是本地的. 就在网上下载了一个对照工具(破解版)认为挺好用的对于不同的地方有高亮显示. 就给大家分享一下.软件名叫:beyond compare 软件下载地址 ...

  4. 数据库中的java.sql.Timestamp转换成Date

    查询数据库中的时间类型为 java.sql.Timestamp 保存在json中需要格式化 自定义工具类  DateJsonValueProcessor package com.rom.util; i ...

  5. doT.js变量和数组混合读取方式

    可以包裹任意大小的html 变量在其包裹的任意区域都有效 单个变量可以和数组分开展示 最好放置在最下方执行js 数据结构 var data = { "id": "1280 ...

  6. Java 定制工具库 —— Print(import static)

    创建自己的工具库以减少或消除重复的程序代码.例如,我们在Print类中,对常常用到的System.out.println()封装调用以减少输入负担.这样,我们在使用该类时,可以用一个更具可读性的 im ...

  7. 访问Storm ui界面,出现org.apache.thrift7.transport.TTransportException: java.net.ConnectException: Connection refused的问题解决(图文详解)

    不多说,直接上干货! 前期博客 apache-storm-0.9.6.tar.gz的集群搭建(3节点)(图文详解) 问题详情 org.apache.thrift7.transport.TTranspo ...

  8. Ubuntu16.04 Mysql

    1.安装mysql root@ubuntu:~# sudo apt-get install mysql-server root@ubuntu:~# apt install mysql-client r ...

  9. MyBatis数据持久化(五)数据源配置优化

    在前面的教程中,我们把数据库的驱动.用户名.密码等配置项全部写在 SqlMapConfig.xml中: <dataSource type="POOLED"> <p ...

  10. POJ 3255 Roadblocks (Dijkstra求最短路径的变形)(Dijkstra求次短路径)

    Roadblocks Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16425   Accepted: 5797 Descr ...