Selenium(2): DOM元素定位、操作
阿新 • • 發佈:2019-02-12
DOM 元素定位
定位過程
※ 如果使用 By.tagName,By.className 定位,只會返回第一個匹配元素,但元素class元素內容不止一個,而是類似<div class="btn-login btn">可以使用 By.cssSelector 的方式定位;
示例
示例
定位過程
- WebDriver物件的findElement函式定義一個Web頁面元素;
- findElements方法可以定位頁面的多個元素;
- 使用WebElement物件來儲存定位的元素,以便後續操作;
id 定位 |
driver.findElement(By.id(“id的值”)); |
name定位 |
driver.findElement(By.name(“name的值”)); |
xpath 方式定位 |
driver.findElement(By.xpath(“xpath表示式”)); |
Class 名稱定位 |
driver.findElement(By.className(“class屬性”)); |
css 方式定位 |
driver.findElement(By.cssSelector(“css表示式”)); |
TagName 標籤名稱定位 |
driver.findElement(By.tagName(“標籤名稱”)); |
Jquery表示式定位 |
Js.executeScript(“return jQuery.find(“jquery表示式”)”) |
連結的全部文字定位 |
driver.findElement(By.linkText(“連結的全部文字”)); |
連結的部分文字定位 |
driver.findElement(By.partialLinkText(“連結的部分文字”)); |
WebDriver driver =newFirefoxDriver();
driver.get("http://www.assad.site");
WebElement element1 = driver.findElement(By.id("login"));//通過id獲取元素
WebElement element2 = driver
WebElement element3 = driver.findElement(By.className("btn"));//通過cssName獲取元素
滑鼠單擊(用於按鈕等) |
webelement.click(); |
鍵盤輸入(用於文字框等) | webelement.setKey("輸入內容字串"); |
WebDriver driver =newFirefoxDriver();
driver.get("http://www.assad.site");
//鍵盤輸入事件
WebElement element1 = driver.findElement(By.id("login-input"));
element1.sendKey("hello world");
//滑鼠點選事件
WebElement element1 = driver.findElement(By.id("submit"));
element1.click();
Actions action =newActions(driver);
// 滑鼠左鍵點選指定的元素
action.click(driver.findElement(By.id("test")));
// 滑鼠左鍵在座標為(300,400)位置做單擊操作
action.moveByOffset(300,400).
click();
2、滑鼠右鍵點選
Actions action =newActions(driver);
// 滑鼠右鍵點選指定的元素
action.contextClick(driver.findElement(By.id("test")));
// 滑鼠右鍵在座標為(300,400)位置做單擊操作
action.moveByOffset(300,400).contextClick();
3.滑鼠雙擊操作
Actions action =newActions(driver);
// 滑鼠雙擊擊指定的元素
action.doubleClick(
));// 滑鼠在座標為(300,400)位置做雙擊操作
action.moveByOffset(300,400).doubleClick();
4. 滑鼠懸停操作
Actions action =newActions(driver);
// 滑鼠懸停在 onElement 元素的位置
action.clickAndHold(driver.findElement(By.id("test"));
// 滑鼠懸停座標位置
action.moveByOffset(300,400).clickAndHold();
Actions action =newActions(driver);
action.release();// 釋放滑鼠
Actions action =newActions(driver);
// 將滑鼠移到 toElement 元素中點
action.moveToElement(toElement);
// 以滑鼠當前位置或者 (0,0) 為中心開始移動到 (xOffset, yOffset) 座標軸
action.moveByOffset(xOffset,yOffset);
Actions action =newActions(driver);
// 滑鼠拖拽動作,將 source 元素拖放到 target 元素的位置
action.dragAndDrop(source,target);
// 滑鼠拖拽動作,將 source 元素拖放到 (xOffset, yOffset) 位置
action.dragAndDrop(source,xOffset,yOffset);
Actions action =newActions(driver);
//在網頁檢視中執行按鍵操作
action.sendKeys(Keys.SPACE);// 模擬按下並釋放空格鍵
action.sendKeys(Keys.TAB);// 模擬按下並釋放 TAB 鍵
//對某個DOM元素執行按鍵操作(如input表單等)
action.sendKeys(element,"String would be send");
Actions action =newActions(driver);
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 鍵