selenium爬虫,selenium自动测试,WebDriver

selenium爬虫,selenium自动测试,WebDriver。

A :下载

對應的selenium和Driver版本下载链接
**注意:selenium和WebDriver版本要对应
把WebDriver(我用的IE的IEDriverServer.exe)放到本地文件夹下,设置环境变量path,指定到该路径。

B:引入seleniumjar包

这里用普通的java project方式练手的。当然可以直接maven引入依赖
在这里插入图片描述

C:创建项目,实例化Driver

		// 指定Driver的位置
		System.setProperty("webdriver.ie.driver", "F:\\Driver\\IEDriverServer.exe"); // 必须加
		// 实例化一个driver对象
		WebDriver d = new InternetExplorerDriver();

D: 应用

下面的完成代码有注释,很清楚的:

package com.kone;
import java.io.File;
import java.io.IOException;
import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.io.FileHandler;

public class SeleniumTest {
	public static void main(String[] args) throws InterruptedException, IOException {
		// 指定Driver的位置
		System.setProperty("webdriver.ie.driver", "F:\\Driver\\IEDriverServer.exe"); // 必须加
		// 实例化一个driver对象
		WebDriver d = new InternetExplorerDriver();
		// 打开网页
		d.get("http://www.baidu.com/");
		// 获得网页标题
		System.out.println("d.getTitle():" + d.getTitle());
		// 当前页面的url
		//System.out.println("d.getPageSource():" + d.getPageSource());
		// 最大化窗口
		d.manage().window().maximize();
		// 关闭当前窗口,如果只有一个窗口,则关闭浏览器
		// d.close();
		// 关闭webdriver启动的所有窗口
		// d.quit();
		// 使用navigate.to打开指定网页地址:百度新闻
		d.navigate().to("http://news.baidu.com/");
		Thread.sleep(1000);
		// 点击打开另一个页面:国内新闻
		d.findElement(By.linkText("国内")).click();
		Thread.sleep(1000);
		// 使用navigate.back返回到百度新闻页
		d.navigate().back();
		Thread.sleep(1000);
		// 使用navigate.forward返回到百度国内新闻页
		d.navigate().forward();
		Thread.sleep(1000);
		// 使用navigate.refresh刷新当前页面
		d.navigate().refresh();
		d.navigate().to("http://www.baidu.com/");
		// 输入查询关键字
		d.findElement(By.id("kw")).sendKeys("a");
		try {
			// 点击查询按钮,此处id给了错误的所以失败后会走到catch分支进行截图
			d.findElement(By.id("su112233")).click();
		} catch (Exception e) {
			// 失败后调用下面的getScreenShot方法进行截图
			//将WebDriver类型的对象转换成TakesScreenshot类型的对象,以方便用它的抓图的方法
			TakesScreenshot srcShot = (TakesScreenshot) d;
			//利用getScreenshotAs()实现截图并将截图保存到srcFile中
		    File srcFile = srcShot.getScreenshotAs(OutputType.FILE);
		    File desFile = new File("D:\\srcShots.png");
		    FileHandler.copy(srcFile, desFile);
		}
	}
}

E:其他应用

1. 元素的定位

Selenium

自动化,我们需要做的最基本的事情就是在页面找到元素并通过脚本程

序去操作这个元素,实现模拟人工操作。我们有多种定位元素的方式可以选择:

通过元素的

ID定位元素:

findElement(By.id(element));

通过元素的名称定位元素:

findElement(By.name(element));

通过元素的html中的位置定位元素:

findElement(By.xpath(element));

通过元素的标签名称定位元素:

findElement(By.tagName(element));

通过元素的链接名称定位元素:

findElement(By.linkText(element));

通过元素的类名定位元素:

findElement(By.className(element));

通过元素的css定位元素:

findElement(By.cssSelector(element));

通过元素的部分链接名称定位元素:

findElement(By.partialLinkText(element));

2. 元素的操作

不同的元素我们进行不同的操作,按钮的点击、输入框的字符输入、或者是元素的内

容获取,不同的元素我们操作的方式不一。

对ID为element的元素进行点击操作:

driver.findElement(By.id(element)).click();

对ID为element的元素进行发送字符操作:

driver.findElement(By.id(element)).sendKeys(“XXXXXX”);
这里只举用的最多且最简单的的两例元素的操作,

还有的是先获取元素后,再单独操作

WebElement text1 = driver.findElement(By.name(“password”));
text1.sendKeys(“123456”);

3.页面操作

模拟鼠标点击:driver.click();
打开网页:driver.get(“https://www.baidu.com”);
关闭网页:driver.close();

在输入框中输入内容:text.sendKeys(“”);
清空输入框中的内容:text.clear();
获取输入框中的内容:text.getText();

选择下拉框中的元素:
Select select = new Select(wd.findElement(By.id(“select”)));

切换到某个frame:
driver.switchTo().frame("");

从一个frame切换到另一个frame:
driver.switchTo().frame("");

切换到某个window:
driver.switchTo().window(“windowName”);

返回父iframe:(一般在跳转frame之前都写上这个语句)
driver.switchTo().defaultContent();

刷新页面:driver.navigate().refresh();

页面前进后退:
driver.navigate().forward();

driver.navigate().back();

4.输入框(text field or textarea)

输入框(text field or textarea)

WebElement element = driver.findElement(By.id("passwd-id"));

element.sendKeys(“test”);//在输入框中输入内容:
element.clear();       //将输入框清空
element.getText();     //获取输入框的文本内容: 
5.下拉框下拉选择框(Select)
Select select = new Select(driver.findElement(By.id("select")));  

select.selectByVisibleText(“A”);
select.selectByValue(“1”); 
select.deselectAll();
select.deselectByValue(“1”);
select.deselectByVisibleText(“A”);
select.getAllSelectedOptions();
select.getFirstSelectedOption(); 
6.单选项(Radio Button)
ebElement radio=driver.findElement(By.id("BookMode"));

radio.click();       //选择某个单选项
radio.clear();      //清空某个单选项
radio.isSelected();  //判断某个单选项是否已经被选择
7.多选项(checkbox)
WebElement checkbox = driver.findElement(By.id("myCheckbox."));

checkbox.click();
checkbox.clear();
checkbox.isSelected();
checkbox.isEnabled();
8:按钮(button)
WebElement btn= driver.findElement(By.id("save"));

btn.click();      //点击按钮
btn.isEnabled ();  //判断按钮是否enable
9.弹出对话框(Popup dialogs)处理
Alert alert = driver.switchTo().alert();

alert.accept();  //确定
alert.dismiss();  //取消
alert.getText(); //获取文本
10.表单(Form)
Form中的元素的操作和其它的元素操作一样,对元素操作完成后对表单的提交可以:

  WebElement approve = driver.findElement(By.id("approve"));

  approve.click();
或
  approve.submit();//只适合于表单的提交
11.上传文件
WebElement adFileUpload =driver.findElement(By.id("WAP-upload"));

  String filePath = "C:\test\\uploadfile\\media_ads\\test.jpg";

  adFileUpload.sendKeys(filePath);
12.Windows 和 Frames之间的切换
  • driver.switchTo().defaultContent();     //返回到最顶层的frame/iframe
  • driver.switchTo().frame(“leftFrame”);    //切换到某个frame:
  • driver.switchTo().window(“windowName”); //切换到某个window
13.调用Java Script

Web driver对Java Script的调用是通过JavascriptExecutor来实现的,例如:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript(“JS脚本”);

14. 超时设置
WebDriver driver = new FirefoxDriver();

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);      //识别元素时的超时时间
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);  //页面加载时的超时时间
driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS);  //异步脚本的超时时间
  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kone.wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值