一稍味、創(chuàng)建項(xiàng)目
1、首先使用eclipse創(chuàng)建一個(gè)Java項(xiàng)目
2荠卷、導(dǎo)入maven工具包
主要需要selenium包
<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模庐、創(chuàng)建對應(yīng)的方法
例如,創(chuàng)建連接瀏覽器方法油宜、獲取元素方法
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);
//關(guān)閉瀏覽器
webDriver.quit();
}
4掂碱、常用獲取瀏覽器的定位
1.xpath定位
webDriver.findElement(By.xpath("/html/body/div[5]/div[1]/button[2]"))
webDriver.findElement(By.xpath("http://*[@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"))
使用以上方法既可以創(chuàng)建一個(gè)簡單的自動(dòng)化項(xiàng)目
二怜姿、獲取元素失敗可能因素
1、元素屬性為隱藏
處理方法使用js腳本處理隱藏元素
//調(diào)用js
JavascriptExecutor removeAttribute = (JavascriptExecutor) webDriver;
//告訴js需要清除那個(gè)元素
removeAttribute.executeScript("var setDate
=document.getElementById("birthday").removeAttribute('readonly');");
//清除隱藏元素屬性
webDriver.findElement(By.id("birthday")).clear();
2疼燥、元素在iframe標(biāo)簽
將webDriver切換到iframe標(biāo)簽
//找到需要切換frame頁面信息
WebElement frame = webDriver.findElement(By.xpath("http://[@id="top_tabs_box"]/div/div[2]/iframe"));
//切換到這個(gè)頁面上
webDriver.switchTo().frame(frame);
//切換回frame
webDriver.switchTo().defaultContent();
3沧卢、頁面元素還未加載完全
增加等待時(shí)間
//等待1秒后加載數(shù)據(jù)
Thread.sleep(1000);