java使用selenium3

博客未详细介绍Selenium,直接给出谷歌浏览器webdriver下载地址,还提及maven引入,以及打开多个标签页和在多个标签中切换的内容,主要围绕Selenium在爬虫方面的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

selenium的介绍及背景这里不再说明,直接百度能看到很多文章,话不多说上代码

// 在System中配置谷歌驱动的路劲
System.setProperty("webdriver.chrome.driver","C:\\Users\\0\\Desktop\\2019-07-01\\chromedriver.exe");
// 设置启动参数
ChromeOptions options = new ChromeOptions();
//  设置浏览器window.navigator.webdriver 为false
options.setExperimentalOption("excludeSwitches", Arrays.asList("enable-automation"));

// 打开浏览器
EventFiringWebDriver driver = new EventFiringWebDriver(new ChromeDriver(options));
driver.register(new MyWebDriverListener());

// 设置浏览器窗口分辨率大小
driver.manage().window().setSize(new Dimension(480, 1200));

String url = “https://www.baidu.com”;
// 加载链接
driver.get(url);
// 查找元素
WebElement emailHeatmap = driver.findElement(By.id("xxxx"));
// 执行js
((JavascriptExecutor) driver).executeScript("$(\"#confirm-booking-heatmap\").click()");


/**
实现WebDriverEventListener接口监听事件
**/
class MyWebDriverListener implements WebDriverEventListener{

	@Override
	public void beforeAlertAccept(WebDriver driver) {
		System.out.println("beforeAlertAccept:"+LocalDateTime.now());
	}

	@Override
	public void afterAlertAccept(WebDriver driver) {
		System.out.println("afterAlertAccept:"+LocalDateTime.now());
	}

	@Override
	public void afterAlertDismiss(WebDriver driver) {
		System.out.println("afterAlertDismiss:"+LocalDateTime.now());
	}

	@Override
	public void beforeAlertDismiss(WebDriver driver) {
		System.out.println("beforeAlertDismiss:"+LocalDateTime.now());
		
	}

	@Override
	public void beforeNavigateTo(String url, WebDriver driver) {
		System.out.println("beforeNavigateTo:"+url+","+driver.getCurrentUrl());
		
	}

	@Override
	public void afterNavigateTo(String url, WebDriver driver) {
		System.out.println("afterNavigateTo:"+url+","+driver.manage());
		
	}

	@Override
	public void beforeNavigateBack(WebDriver driver) {
		System.out.println("beforeNavigateBack:"+LocalDateTime.now());
		
	}

	@Override
	public void afterNavigateBack(WebDriver driver) {
		System.out.println("afterNavigateBack:"+LocalDateTime.now());
		
	}

	@Override
	public void beforeNavigateForward(WebDriver driver) {
		System.out.println("beforeNavigateForward:"+LocalDateTime.now());
		
	}

	@Override
	public void afterNavigateForward(WebDriver driver) {
		System.out.println("afterNavigateForward:"+LocalDateTime.now());
		
	}

	@Override
	public void beforeNavigateRefresh(WebDriver driver) {
		System.out.println("beforeNavigateRefresh:"+LocalDateTime.now());
		
	}

	@Override
	public void afterNavigateRefresh(WebDriver driver) {
		System.out.println("afterNavigateRefresh:"+LocalDateTime.now());
		
	}

	@Override
	public void beforeFindBy(By by, WebElement element, WebDriver driver) {
		System.out.println("beforeFindBy:"+LocalDateTime.now());
		
	}

	@Override
	public void afterFindBy(By by, WebElement element, WebDriver driver) {
		System.out.println("afterFindBy:"+LocalDateTime.now());
		
	}

	@Override
	public void beforeClickOn(WebElement element, WebDriver driver) {
		System.out.println("beforeClickOn:"+LocalDateTime.now());
		
	}

	@Override
	public void afterClickOn(WebElement element, WebDriver driver) {
		System.out.println("afterClickOn:"+LocalDateTime.now());
		
	}

	@Override
	public void beforeChangeValueOf(WebElement element, WebDriver driver, CharSequence[] keysToSend) {
		System.out.println("beforeChangeValueOf:"+LocalDateTime.now());
		
	}

	@Override
	public void afterChangeValueOf(WebElement element, WebDriver driver, CharSequence[] keysToSend) {
		System.out.println("afterChangeValueOf:"+LocalDateTime.now());
		
	}

	@Override
	public void beforeScript(String script, WebDriver driver) {
		System.out.println("beforeScript:"+LocalDateTime.now());
		
	}

	@Override
	public void afterScript(String script, WebDriver driver) {
		System.out.println("afterScript:"+LocalDateTime.now());
		
	}

	@Override
	public void beforeSwitchToWindow(String windowName, WebDriver driver) {
		System.out.println("beforeSwitchToWindow:"+LocalDateTime.now());
		
	}

	@Override
	public void afterSwitchToWindow(String windowName, WebDriver driver) {
		System.out.println("afterSwitchToWindow:"+LocalDateTime.now());
		
	}

	@Override
	public void onException(Throwable throwable, WebDriver driver) {
		System.out.println("onException记录:"+LocalDateTime.now());
		
	}

	@Override
	public <X> void beforeGetScreenshotAs(OutputType<X> target) {
		System.out.println("beforeGetScreenshotAs:"+LocalDateTime.now());
		
	}

	@Override
	public <X> void afterGetScreenshotAs(OutputType<X> target, X screenshot) {
		System.out.println("afterGetScreenshotAs:"+LocalDateTime.now());
		
	}

	@Override
	public void beforeGetText(WebElement element, WebDriver driver) {
		System.out.println("WebElement:"+LocalDateTime.now());
		
	}

	@Override
	public void afterGetText(WebElement element, WebDriver driver, String text) {
		System.out.println("afterGetText:"+LocalDateTime.now());
		
	}
	
}

// 火狐启动方式
System.setProperty("webdriver.gecko.driver","C:\\Users\\0\\Desktop\\2019-07-01\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();

谷歌浏览器的webdriver的下载地址
http://npm.taobao.org/mirrors/chromedriver

maven引入

<dependency>
	    <groupId>org.seleniumhq.selenium</groupId>
	    <artifactId>selenium-java</artifactId>
	    <version>3.141.59</version>
	</dependency>

打开多个标签页和在多个标签中切换

 // 利用js代码打开标签页
 ((JavascriptExecutor) driver).executeScript("window.open(\"" + keyUrl + "\");");
 // 将页签且回到第一个
 Set<String> windows = driver.getWindowHandles();
 List<String> list = new ArrayList<>(windows);
 driver.switchTo().window(list.get(0));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值