一、環境搭建(以java為例)
1.下載chrome瀏覽器
https://www.google.cn/intl/zh-CN/chrome/
2.查看chrome瀏覽器版本
設置+關于chrome
3.下載chrome瀏覽器驅動
下載瀏覽器對應版本的
ChromeDriver - WebDriver for Chrome - Downloads
120以上版本:Chrome for Testing availability
4.配置環境變量
點擊我的電腦/此電腦>>右鍵點擊屬性>>點擊高級系統設置>>環境變量>>系統變量。
點擊系統變量中的path,點擊新增,并將驅動的安裝目復制填入后,點擊確定。
5.Java創建項目,添加pom文件中添加依賴
<dependencies><!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.141.59</version></dependency>
</dependencies>
import org.openqa.selenium.chrome.ChromeDriver;public class Main {public static void main(String[] args) {WebDriver webDriver = new ChromeDriver();}
}
二、元素定位
1.CSS選擇
(1)類選擇器
class=""
webDriver.findElement(By.cssSelector(".前端樣式類名"));
(2)id選擇器
webDriver.findElement(By.cssSelector("#前端樣式類名"));
(3)標簽選擇器
標簽名作為定位
2.xpath
webDriver.findElement(By.xpath("//*[@id=\"s-top-left\"]/a[1]")).click();
(1)絕對路徑
(2)相對路徑
? ? 相對路徑+索引??
? ? 相對路徑+屬性值
? ? 相對路徑+通配符
? ? 相對路徑+文本匹配
3.css選擇器 vs xpath
CSS選擇器定位元素效率高
三、操作測試對象
1.click
點擊對象
webDriver.findElement(By.cssSelector("#kw")).click();
2.send_key
在對象上模擬按鍵輸入
webDriver.findElement(By.cssSelector("#kw")).sendKeys("你好");
3.clear
清除對象輸入的文本內容
4.submit
提交??
點擊元素需是在form標簽內
5.text
獲取元素文本信息
四、等待
1.sleep(等待時間)
強制等待
2.隱式等待
最長等待某個時間點,獲取到頁面元素,就執行下面代碼,如果這個時間還沒有找到元素就報錯。
WebDriverWait wait= new WebDriverWait(webDriver,3000);
五、打印信息
1.title
獲取title
String title= webDriver.getTitle();
2.獲取url
String url= webDriver.getCurrentUrl();
六、瀏覽器操作
1.瀏覽器最大化
webDriver.manage().window().maximize();
2.設置瀏覽器大小
webDriver.manage().window().setSize(new Dimension(長度,寬度));
3.瀏覽器前進和后退
后退
webDriver.navigate().back();
前進
webDriver.navigate().forward();
webDriver.navigate().to("網址");
等同于 webDriver.get();
4.滾動條
((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=10000");
5.關閉瀏覽器
webDriver.quit();
webDriver.close();
區別:
1.quit關閉整個瀏覽器,close關閉當前頁面
2.quit清空緩存,close不會清空緩存
七、鍵盤按鍵
1.鍵盤按鍵使用
webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL);
2.組合鍵使用
webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL,"A");
八、鼠標事件
//創建 Actions
Actions action=new Actions(webDriver);//找到按鈕
WebElement target= webDriver.findElement(By.cssSelector(".a3"));//鼠標移動到這個按鈕
action.moveToElement(target).contextClick().perform();
九、選擇框
List <WebElement> webElements=webDriver.findElements(By.cssSelector("input"));for(int i=0;i<webElements.size();i++){//getAttribute獲取頁面上的元素屬性if(webElements.get(i).getAttribute("type").equals("radio")){webElements.get(i).click();}}
十、上傳文件
webDriver.get("");
webDriver.findElement(By.xpath("/html/body/input")).sendKeys("上傳文件名");
十一、frame
webDriver.switchTo().frame("id名");
十二、下拉框
WebElement webElement= webDriver.findElement(By.cssSelector("#ShippingMethod"));Select select=new Select(webElement);select.selectByIndex(1);select.selectByValue("8.34");
十三、alert、confirm、prompt 的處理
text 返回alert/confirm/prompt 中的文字信息
accept 點擊確認按鈕
dismiss 點擊取消按鈕,如果有的話
send_keys 輸入值,如果alert 沒有對話框就不能用了,不然會報錯
//輸入彈窗
webDriver.switchTo().alert().sendKeys("name");//點擊確定webDriver.switchTo().alert().accept();//點擊取消webDriver.switchTo().alert().dismiss();
十四、窗口切換
//當前窗口句柄String cur_handle=webDriver.getWindowHandle();//當前瀏覽器當前所有句柄Set<String> all_handles=webDriver.getWindowHandles();String target="";for(String temp :all_handles){target=temp;}//切換窗口句柄webDriver.switchTo().window(target);
十五、截圖
下載依賴
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version>
</dependency>
File file=((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
//file保存磁盤FileUtils.copyFile(file,new File("保存路徑"));