- 瀏覽器、鼠標、鍵盤 操作
maximize() 設置瀏覽器最大化
setSize() 設置瀏覽器寬高
back() 模擬瀏覽器後退按鈕
forward() 模擬瀏覽器前進按鈕
refresh() 刷新頁面(F5)
Actions 類提供了鼠標操作的常用方法:
contextClick() 右擊
clickAndHold() 鼠標點擊並控制
doubleClick() 雙擊
dragAndDrop() 拖動
sendKeys(Keys.BACK_SPACE) 回格鍵(BackSpace)
sendKeys(Keys.SPACE) 空格鍵(Space)
sendKeys(Keys.TAB) 製表鍵(Tab)
sendKeys(Keys.ESCAPE) 回退鍵(Esc)
sendKeys(Keys.ENTER) 回車鍵(Enter)
- 瀏覽器cookie操作
WebDriver 操作Cookie的方法:
getCookies() 獲得所有 cookie 信息。 -
getCookieNamed(String name) 返回字典的key爲“name”的Cookie信息。
addCookie(cookie dict) 添加Cookie。“cookie_dict”指字典對象,必須有 name和value值。
deleteCookieNamed(String name) 刪除Cookie 信息“name”是要刪除的 cookie的名稱
deleteAllCookies() 刪除所有 cookie 信息。
-
在測試過程中需要把結果截屏保存下來。 截屏操作,圖片用當前時間命名。
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import org.apache.commons.io.FileUtils;
//轉換時間格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
//獲取當前時間
String time = dateFormat.format(Calendar.getInstance().getTime());
//執行屏幕截取
File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
//利用FileUtils工具類的copyFile()方法保存getScreenshotAs()返回的文件;"截圖"即時保存截圖的文件夾
FileUtils.copyFile(srcFile, new File("E:\\截圖", time + ".png"));
- 瀏覽器-無頭瀏覽器設置
在linux環境執行腳本,一般需要設置無頭瀏覽器模式
import java.util.HashMap;
import java.util.Map;
import org.openqa.selenium.chrome.ChromeOptions;
//使用ChromeOptions的setHeadless
ChromeOptions chrome_options = new ChromeOptions();
//setHeadless true設置無瀏覽器模式
chrome_options.setHeadless(true);
//初始化一個chrome_options屬性的chrome瀏覽器實例
WebDriver driver = new ChromeDriver(chrome_options);
- 瀏覽器-模擬手機模式
import java.util.HashMap;
import java.util.Map;
import org.openqa.selenium.chrome.ChromeOptions;
ChromeOptions chrome_options = new ChromeOptions();
//設置手機模式方法1
Map<String, String> mobileEmulation = new HashMap<>();
mobileEmulation.put("deviceName", "iPhone X");
chrome_options.setExperimentalOption("mobileEmulation", mobileEmulation);
//初始化一個chrome_options屬性的chrome瀏覽器實例
WebDriver driver = new ChromeDriver(chrome_options);
參考:http://chromedriver.chromium.org/mobile-emulation
https://blog.csdn.net/u013948858/article/details/81123951
瀏覽器-瀏覽器操作
maximize() 設置瀏覽器最大化
setSize() 設置瀏覽器寬高
back() 模擬瀏覽器後退按鈕
forward() 模擬瀏覽器前進按鈕
refresh() 刷新頁面(F5)
//最大化窗口
driver.manage().window().maximize();
//設置窗口大小爲375*812
Dimension targetSize = new Dimension(375, 812);
driver.manage().window().setSize(targetSize);
// back() 後退到上一個頁面
driver.navigate().back();
// forward() 前進
driver.navigate().forward();
//刷新頁面
driver.navigate().refresh();
瀏覽器cookie操作
//查看所有cookie
System.out.println("delete cookie: " + driver.manage().getCookies());
//查看部分cookie
System.out.println("get saturn: " + driver.manage().getCookieNamed("saturn"));
//刪除所有cookie
driver.manage().deleteAllCookies();
driver.navigate().refresh();
//添加cookie
Cookie c1 = new Cookie("saturn", "ve76e10f83e8e1360bf9619a6c1d982ee");
driver.manage().addCookie(c1);
driver.navigate().refresh();
文件上傳
查看元素屬性是否爲“input”?如圖辨別input元素
input元素,則按照一般的input元素的sendkeys方法處理。
input元素,只可以直接把文件路徑輸入上傳
driver.findElement(By.xpath("//*[@id=\"app\"]/div/section/div[2]/input")).sendKeys("C:\\Koala.jpg");
TimeUnit.SECONDS.sleep(10);
非input元素,可以藉助於Robot類。 或者第三方工具AutoIT。 Robot方法如下
// 指定圖片的路徑
StringSelection sel = new StringSelection("C:\\Penguins.jpg");
// 把圖片文件路徑複製到剪貼板
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(sel,null);
System.out.println("selection" +sel);
// 點擊本地上傳圖片
driver.findElement(By.xpath("//*[@id=\"app\"]/div/section/div[3]/input")).click();
// 新建一個Robot類的對象
Robot robot = new Robot();
Thread.sleep(1000);
// 按下回車
robot.keyPress(KeyEvent.VK_ENTER);
// 釋放回車
robot.keyRelease(KeyEvent.VK_ENTER);
// 按下 CTRL+V
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
// 釋放 CTRL+V
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_V);
Thread.sleep(1000);
// 點擊回車 Enter
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
處理Alert彈窗
很多時候,我們進入一個網站,就會彈窗一個alert框,有些我們直接關閉,有些可能有取消和確定按鈕,還有些調查的alert框,可以運行用戶輸入文字。
accept()方法就是確定,dismiss()就是點擊alert框上面的取消按鈕,getText()就是獲取alert內部的文字
利用Javascript處理豎向滾動條
使用javascript腳本去處理豎向滾動條。webdriver中是沒有拖動滾動條的方法的,需要藉助javascript來根據一個頁面元素去實現拖動滾動條的過程
一個是webdriver中如何執行Js腳本,第二個是如何寫js滾動到某一個元素附近。
// 定義頁面底部 一個元素
WebElement element = driver.findElement(By.xpath("//*[@id=\"app\"]/div/div[8]/div[2]/a"));
//創建一個javascript 執行實例
JavascriptExecutor je = (JavascriptExecutor) driver;
//執行js語句,拖拽瀏覽器滾動條,直到該元素到底部,馬上就不可以見
je.executeScript("arguments[0].scrollIntoView(true);",element);
處理下拉框選擇
通過相同的Xpath表達式可以獲取一組元素,然後把這一組元素放到集合類list中,通過遍歷,判斷一個元素的文字部分是不是包含一個我們要操作的字符串,如果是就點擊該元素,並退出當前循環,ele.getAttribute("inerHTML")就是獲取當前元素上面的文字,相當於ele.getText().。
// 點擊選中速度這個下拉菜單
driver.findElement(By.xpath("//*[@id='speed-button']")).click();
// 一個節點下所有的option選項
List<WebElement> list = driver.findElements(By.xpath("//*[@id='speed-menu']/li/div"));
for (WebElement ele : list){
if(ele.getAttribute("innerHTML").equals("Fast")){
ele.click();
break;
}
}