一、selenium 動(dòng)作
1、瀏覽器窗口控制:
// 前置
WebDriver driver = new ChromeDriver();
driver.get("http://www.baidu.com"); // 打開指定頁面地址
// 窗口最大化
driver.manage().window().maximize()
// 指定窗口大小
Dimension arg0 = new Dimension(800, 480);
driver.manage().window().setSize(arg0);
// 模擬瀏覽器返回
driver.navigate().back();
// 同上一步意思相反
driver.navigate().forward();
// 模擬瀏覽器刷新
driver.navigate().refresh();
// 關(guān)閉瀏覽器
driver.quit();
2、常用元素操作:
| 方法 |
介紹 |
| getText() |
獲取元素文本信息 |
| sendKeys() |
輸入框 or 文本框內(nèi)容輸入 |
# sendKeys 示例:
driver.findElement(By.className("username")).sendKeys("helloword");
| clear() |
清除輸入框 or 文本框內(nèi)容 |
| click() |
點(diǎn)擊 |
| submit() |
提交,跟click類似 |
| getAttribute() |
獲取某個(gè)屬性的值 |
# getAttribute()
# 源碼:
<html>
<body>
<input class="hello" type="text" placeholder="hello world !!!!"/>
</body>
</html>
# 示例:
String a = driver.findElement(By.className("hello")).getAttribute("placeholder");
System.out.println(a);
# 輸出:
hello world !!!!
| getSize() |
獲取元素的 寬 高 |
| getTagName() |
獲取屬性的標(biāo)簽名稱 |
| driver.getTitle() |
獲取網(wǎng)頁title |
| isDisplayed() |
判斷頁面元素是否存在 【 注:若元素存在返回 true , 不存在會(huì)拋 NoSuchElementException 異常,表示找不到元素】 |
#還有一種判斷元素是否存在
WebElement element = driver.findElement(By.className("movable"));
// 判斷 element 不為 null
if (!ObjectUtils.isEmpty(element)){
System.out.println(element.getText());
}else {
System.out.println("元素不存在");
}
| isEnabled() |
判斷元素是否可用 , 返回 true 和 false |
| isSelected() |
判斷元素是否為選中狀態(tài) ,使用場(chǎng)景:單選框,下拉列表,復(fù)選框等 |
3、Actions 操作:
3.1、創(chuàng)建 Actions 對(duì)象:
Actions actions = new Actions(driver);
3.2、Actions 模擬鼠標(biāo)操作:
# 注意這里列出比較常用的action鼠標(biāo)操作
| 方法 |
介紹 |
| actions.perform() |
所有動(dòng)作執(zhí)行操作,這個(gè)必須加,不然actions不會(huì)執(zhí)行任何操作 |
| actions.build() |
編譯構(gòu)建動(dòng)作,建議附帶 |
| actions.click(WebElement target) |
鼠標(biāo)左鍵點(diǎn)擊指定元素 |
| actions.contextClick(WebElement target) |
鼠標(biāo)右鍵點(diǎn)擊指定元素 |
| actions.doubleClick(WebElement target) |
鼠標(biāo)雙擊指定的元素 |
| actions.clickAndHold(WebElement element) |
鼠標(biāo)左鍵點(diǎn)擊不釋放,此動(dòng)作可以當(dāng)做鼠標(biāo)懸停使用 |
| actions.dragAndDrop(source,target) |
鼠標(biāo)拖拽動(dòng)作,將 source 元素拖放到 target 元素的位置。 |
| actions.dragAndDrop(source,xOffset,yOffset) |
鼠標(biāo)拖拽動(dòng)作,將 source 元素拖放到 (xOffset, yOffset) 位置,其中 xOffset 為橫坐標(biāo),yOffset 為縱坐標(biāo) 【注意:拖動(dòng)事件chrome好像不怎么支持】
|
| actions.moveToElement(toElement) |
將鼠標(biāo)移到 toElement 元素中點(diǎn) |
| actions.moveToElement(toElement,xOffset,yOffset) |
這里的 (xOffset, yOffset) 是以元素 toElement 的左上角為 (0,0) 開始的 (x, y) 坐標(biāo)軸。 |
| actions.moveByOffset(xOffset,yOffset) |
以鼠標(biāo)當(dāng)前位置或者 (0,0) 為中心開始移動(dòng)到 (xOffset, yOffset) 坐標(biāo)軸 |
【注意: 這里需要注意,如果 xOffset 為負(fù)數(shù),表示橫坐標(biāo)向左移動(dòng),yOffset 為負(fù)數(shù)表示縱坐標(biāo)向上移動(dòng)。而且如果這兩個(gè)值大于當(dāng)前屏幕的大小,鼠標(biāo)只能移到屏幕最邊界的位置同時(shí)拋出 MoveTargetOutOfBoundsExecption 的異常。】
| actions.release() |
釋放鼠標(biāo) |
3.2、Actions 模擬鍵盤操作:
| 方法 |
介紹 |
| action.keyDown(Keys.CONTROL) |
按下 Ctrl 鍵 |
| action.keyDown(Keys.SHIFT) |
按下 Shift 鍵 |
| action.keyDown(Key.ALT) |
按下 Alt 鍵 |
| action.keyUp(Keys.CONTROL) |
釋放 Ctrl 鍵 |
| action.keyUp(Keys.SHIFT) |
釋放 Shift 鍵 |
| action.keyUp(Keys.ALT) |
釋放 Alt 鍵 |
說明:個(gè)人感覺鍵盤模擬操作用的不多,所以不多做介紹,需要可 www.google.com 或 www.baidu.com查詢
4、selenium 界面截圖
# 主體:
((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
# 示例:
try {
//返回一個(gè)文件,需要File接收
File file = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
//時(shí)間格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//將突破copy到指定路徑下
FileUtils.copyFile(file, new File("D:\\IEDAProject\\img\\" + sdf.format(new Date()) + imgName + ".png"));
}catch (IOException io){
io.printStackTrace();
}
4、selenium操作vedio/audio元素
| 方法 |
介紹 |
| addTextTrack() |
向音頻 or 視頻添加新的文本軌道 |
| canPlayType() |
檢測(cè)瀏覽器是否能播放指定的音頻 or 視頻類型 |
| load() |
重新加載音頻 or 視頻元素 |
| play() |
開始播放音頻 or 視頻 |
| pause() |
暫停當(dāng)前播放的音頻 or 視頻 |
# 示例
WebDriver driver = new ChromeDriver();
// 獲取視頻元素
WebElement element = driver.findElement(By.tagName("video"));
// 將driver 轉(zhuǎn)換為 javascript 類型
JavascriptExecutor jse = (JavascriptExecutor) driver;
// play() 開始播放
jse.executeScript("return arguments[0].play()" , element);
5、 selenium 操作滾動(dòng)條
- 5.1 、div內(nèi)的滾動(dòng)條操作
| 方法 |
描述 |
| scrollHeight |
獲取滾動(dòng)條高度 |
| scrollWidth |
獲取橫向滾動(dòng)條寬度 |
| scrollLeft=1000 |
控制橫向滾動(dòng)條位置【1000是指位置的值,根據(jù)自己需求修改】 |
| scrollTop=10000 |
控制縱向滾動(dòng)條位置【1000是指位置的值,根據(jù)自己需求修改】 |
//注意 scroll 是指所定位元素的名稱,ByClassName 代表的是定位元素的類型
String js = "document.getElementsByClassName(\"scroll\")[0].scrollTop=10000";
// 下面的代碼有兩種寫法:
((JavascriptExecutor) driver).executeScript(js);
// or 根據(jù)自己習(xí)慣寫就好了
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript(js);
- 5.1 、 Actions 的 sendKeys() 來操作滾動(dòng)條
# 前置
Actions action = new Actions(driver);
// 向下滾動(dòng)致最底部
action.sendKeys(Keys.ARROW_DOWN)
.sendKeys(Keys.END)
.perform();
// 向上滾動(dòng)致最頂部
action.sendKeys(Keys.PAGE_UP)
.sendKeys(Keys.HOME)
.perform();
http://www.cnblogs.com/xinxin1994/category/1049549.html
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。