设置Webdriver启动chrome为默认用户的配置信息


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


如图:

a)默认用户的扩展:



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



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




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





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

版本说明: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为 你计算机的用户名。

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脚本)










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

附打开新用户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打开为空):











参考:链接1


  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
webdriver.ChromeSelenium库的一个类,用于驱动Chrome浏览器进行自动化测试。它提供了与Chrome浏览器进行交互的方法和功能,可以打开网页、查找元素、执行JavaScript代码等操作。通过设置webdriver.Chrome配置信息,可以指定Chrome浏览器的启动位置、用户数据目录等。执行webdriver.Chrome的代码可以通过调用get方法打开指定的网页,通过find_element方法查找元素,然后使用execute_script方法执行JavaScript代码进行操作。在代码中使用的D:/SETEST/selenium/chromedriver.exe是ChromeDriver的可执行文件,需要下载并配置环境变量才能正常运行webdriver.Chrome。下载ChromeDriver的链接可以在https://chromedriver.storage.googleapis.com/index.html找到。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Selenium Chrome Driver 爬虫实践](https://blog.csdn.net/xiaoxiyang1990/article/details/124605621)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [设置Webdriver启动chrome默认用户配置信息](https://blog.csdn.net/weixin_30772261/article/details/99415406)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值