2020-11-02
2020-11-02 本文已影响0人
小胖5920
一、创建项目
1、首先使用eclipse创建一个Java项目
2、导入maven工具包
主要需要selenium包
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.20</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.5</version>
</dependency>
maven地址:https://mvnrepository.com/
3、创建对应的方法
例如,创建连接浏览器方法、获取元素方法
public static void conn() throws Exception {
//打开浏览器的按照地址
System.setProperty("webdriver.chrome.driver", "/Users/edz/eclipse-workspace/xykweb/bin/chromedriver");
//打开浏览器
WebDriver webDriver = new ChromeDriver();
//输入百度地址
webDriver.get("http://www.baidu.com");
//等待1秒
Thread.sleep(10000);
//关闭浏览器
webDriver.quit();
}
4、常用获取浏览器的定位
1.xpath定位
webDriver.findElement(By.xpath("/html/body/div[5]/div[1]/button[2]"))
webDriver.findElement(By.xpath("//*[@id=\"username\"]"))
2.CSS定位
webDriver.findElement(By.cssSelector(".class"))
3.id定位
webDriver.findElement(By.id("id"))
4.name定位
webDriver.findElement(By.name("name"))
5.class定位
webDriver.findElement(By.className("classname"))
使用以上方法既可以创建一个简单的自动化项目
二、获取元素失败可能因素
1、元素属性为隐藏
处理方法使用js脚本处理隐藏元素
//调用js
JavascriptExecutor removeAttribute = (JavascriptExecutor) webDriver;
//告诉js需要清除那个元素
removeAttribute.executeScript("var setDate
=document.getElementById(\"birthday\").removeAttribute('readonly');");
//清除隐藏元素属性
webDriver.findElement(By.id("birthday")).clear();
2、元素在iframe标签
将webDriver切换到iframe标签
//找到需要切换frame页面信息
WebElement frame = webDriver.findElement(By.xpath("//[@id=\"top_tabs_box\"]/div/div[2]/iframe"));
//切换到这个页面上
webDriver.switchTo().frame(frame);
//切换回frame
webDriver.switchTo().defaultContent();
3、页面元素还未加载完全
增加等待时间
//等待1秒后加载数据
Thread.sleep(1000)