selenium元素的定位以及操作
1. 元素的定位
Selenium
自動化,我們需要做的最基本的事情就是在頁面找到元素并通過腳本程
序去操作這個元素,實現(xiàn)模擬人工操作。我們有多種定位元素的方式可以選擇:
通過元素的
- ID定位元素:
findElement(By.id(element));
- 通過元素的名稱定位元素:
findElement(By.name(element));
- 通過元素的html中的位置定位元素:
findElement(By.xpath(element));
- 通過元素的標簽名稱定位元素:
findElement(By.tagName(element));
- 通過元素的鏈接名稱定位元素:
findElement(By.linkText(element));
- 通過元素的類名定位元素:
findElement(By.className(element));
- 通過元素的css定位元素:
findElement(By.cssSelector(element));
- 通過元素的部分鏈接名稱定位元素:
findElement(By.partialLinkText(element));
2. 元素的操作
不同的元素我們進行不同的操作,按鈕的點擊、輸入框的字符輸入、或者是元素的內(nèi)
容獲取,不同的元素我們操作的方式不一。
- 對ID為element的元素進行點擊操作:
driver.findElement(By.id(element)).click();
- 對ID為element的元素進行發(fā)送字符操作:
driver.findElement(By.id(element)).sendKeys(“XXXXXX”);
這里只舉用的最多且最簡單的的兩例元素的操作,
還有的是先獲取元素后,再單獨操作
WebElement text1 = driver.findElement(By.name("password"));
text1.sendKeys("123456");
3.頁面操作
模擬鼠標點擊:driver.click();
打開網(wǎng)頁:
driver.get("https://www.baidu.com");
關(guān)閉網(wǎng)頁:
driver.close();
在輸入框中輸入內(nèi)容:
text.sendKeys(“”);
清空輸入框中的內(nèi)容:
text.clear();
獲取輸入框中的內(nèi)容:
text.getText();
選擇下拉框中的元素:
Select select = new Select(wd.findElement(By.id("select")));
- 切換到某個frame:
driver.switchTo().frame("");
- 從一個frame切換到另一個frame:
driver.switchTo().frame("");
- 切換到某個window:
driver.switchTo().window("windowName");
- 返回父iframe:(一般在跳轉(zhuǎn)frame之前都寫上這個語句)
driver.switchTo().defaultContent();
刷新頁面:
driver.navigate().refresh();
頁面前進后退:
driver.navigate().forward();
driver.navigate().back();
- 懸停鼠標:
4.輸入框(text field or textarea)
WebElement element = driver.findElement(By.id("passwd-id"));
element.sendKeys(“test”);//在輸入框中輸入內(nèi)容:
element.clear(); //將輸入框清空
element.getText(); //獲取輸入框的文本內(nèi)容:
5.下拉選擇框(Select)
Select select = new Select(driver.findElement(By.id("select")));
select.selectByVisibleText(“A”);
select.selectByValue(“1”);
select.deselectAll();
select.deselectByValue(“1”);
select.deselectByVisibleText(“A”);
select.getAllSelectedOptions();
select.getFirstSelectedOption();
6.單選項(Radio Button)
WebElement radio=driver.findElement(By.id("BookMode"));
radio.click(); //選擇某個單選項
radio.clear(); //清空某個單選項
radio.isSelected(); //判斷某個單選項是否已經(jīng)被選擇
7.多選項(checkbox)
WebElement checkbox = driver.findElement(By.id("myCheckbox."));
checkbox.click();
checkbox.clear();
checkbox.isSelected();
checkbox.isEnabled();
8.按鈕(button)
WebElement btn= driver.findElement(By.id("save"));
btn.click(); //點擊按鈕
btn.isEnabled (); //判斷按鈕是否enable
9.彈出對話框(Popup dialogs)
Alert alert = driver.switchTo().alert();
alert.accept(); //確定
alert.dismiss(); //取消
alert.getText(); //獲取文本
10.表單(Form)
Form中的元素的操作和其它的元素操作一樣,對元素操作完成后對表單的提交可以:
WebElement approve = driver.findElement(By.id("approve"));
approve.click();
或
approve.submit();//只適合于表單的提交
11.上傳文件
上傳文件的元素操作:
WebElement adFileUpload =driver.findElement(By.id("WAP-upload"));
String filePath = "C:\test\\uploadfile\\media_ads\\test.jpg";
adFileUpload.sendKeys(filePath);
12. Windows 和 Frames之間的切換
* driver.switchTo().defaultContent(); //返回到最頂層的frame/iframe
* driver.switchTo().frame("leftFrame"); //切換到某個frame:
* driver.switchTo().window("windowName"); //切換到某個window
13. 調(diào)用Java Script
Web driver對Java Script的調(diào)用是通過JavascriptExecutor來實現(xiàn)的,例如:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("JS腳本");
14.超時設(shè)置
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);//識別元素時的超時時間
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);//頁面加載時的超時時間
driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS);//異步腳本的超時時間