Selenium(2): DOM元素定位、操作
生活随笔
收集整理的這篇文章主要介紹了
Selenium(2): DOM元素定位、操作
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
DOM 元素定位
定位過程
※ 如果使用 By.tagName,By.c lassName 定位,只會返回第一個匹配元素,但元素class元素內(nèi)容不止一個,而是類似<div class="btn-login btn">可以使用 By.cssSelector 的方式定位;
示例WebDriver driver = new FirefoxDriver(); driver.get("http://www.assad.site"); WebElement element1 = driver.findElement(By.id("login")); //通過id獲取元素 WebElement element2 = driver.findElement(By.xpath(".//*[@id='content-detail']/div[6]/div")); //通過xpath獲取元素 WebElement element3 = driver.findElement(By.className("btn")); //通過cssName獲取元素
DOM 元素操作
示例
WebDriver driver = new FirefoxDriver(); driver.get("http://www.assad.site");
//鍵盤輸入事件 WebElement element1 = driver.findElement(By.id("login-input")); element1.sendKey("hello world");
//鼠標(biāo)點(diǎn)擊事件 WebElement element1 = driver.findElement(By.id("submit")); element1.click();
更加復(fù)雜的鍵盤,鼠標(biāo)操作
鼠標(biāo)操作事件 1、鼠標(biāo)左鍵點(diǎn)擊Actions action = new Actions(driver); // 鼠標(biāo)左鍵點(diǎn)擊指定的元素 action.click(driver.findElement(By.id("test"))); // 鼠標(biāo)左鍵在坐標(biāo)為(300,400)位置做單擊操作 action.moveByOffset(300,400).click(); Actions action = new Actions(driver); // 鼠標(biāo)右鍵點(diǎn)擊指定的元素 action.contextClick(driver.findElement(By.id("test"))); // 鼠標(biāo)右鍵在坐標(biāo)為(300,400)位置做單擊操作 action.moveByOffset(300,400).contextClick(); Actions action = new Actions(driver); // 鼠標(biāo)雙擊擊指定的元素 action.doubleClick()); // 鼠標(biāo)在坐標(biāo)為(300,400)位置做雙擊操作 action.moveByOffset(300,400).doubleClick(); Actions action = new Actions(driver); // 鼠標(biāo)懸停在 onElement 元素的位置 action.clickAndHold(driver.findElement(By.id("test")); // 鼠標(biāo)懸停坐標(biāo)位置 action.moveByOffset(300,400).clickAndHold(); 5、 鼠標(biāo)釋放操作
Actions action = new Actions(driver); action.release();// 釋放鼠標(biāo) 6、 鼠標(biāo)移動操作 Actions action = new Actions(driver); // 將鼠標(biāo)移到 toElement 元素中點(diǎn) action.moveToElement(toElement); // 以鼠標(biāo)當(dāng)前位置或者 (0,0) 為中心開始移動到 (xOffset, yOffset) 坐標(biāo)軸 action.moveByOffset(xOffset,yOffset); 7、 鼠標(biāo)拖拽動作 Actions action = new Actions(driver); // 鼠標(biāo)拖拽動作,將 source 元素拖放到 target 元素的位置 action.dragAndDrop(source,target); // 鼠標(biāo)拖拽動作,將 source 元素拖放到 (xOffset, yOffset) 位置 action.dragAndDrop(source,xOffset,yOffset);
鍵盤操作事件 1. 普通鍵盤模擬,使用 sendKeys(keysToSend) ,如正常的鍵盤按鍵和 空格,Backspace等;
Actions action = new Actions(driver);
//在網(wǎng)頁視圖中執(zhí)行按鍵操作 action.sendKeys(Keys.SPACE);// 模擬按下并釋放空格鍵 action.sendKeys(Keys.TAB);// 模擬按下并釋放 TAB 鍵
//對某個DOM元素執(zhí)行按鍵操作(如input表單等) action.sendKeys(element,"String would be send"); 2、組合鍵模擬,使用 keyDown( key )、keyUp(key) 分別執(zhí)行鍵盤按鍵的按下和釋放;
Actions action = new Actions(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 鍵
※ 如果action操作沒有反應(yīng),可以對Action對象調(diào)用perform()方法
定位過程
- WebDriver對象的findElement函數(shù)定義一個Web頁面元素;
- findElements方法可以定位頁面的多個元素;
- 使用WebElement對象來存儲定位的元素,以便后續(xù)操作;
| id 定位 | driver.findElement(By.id(“id的值”)); |
| name定位 | driver.findElement(By.name(“name的值”)); |
| xpath 方式定位 | driver.findElement(By.xpath(“xpath表達(dá)式”)); |
| Class 名稱定位 | driver.findElement(By.className(“class屬性”)); |
| css 方式定位 | driver.findElement(By.cssSelector(“css表達(dá)式”)); |
| TagName 標(biāo)簽名稱定位 | driver.findElement(By.tagName(“標(biāo)簽名稱”)); |
| Jquery表達(dá)式定位 | Js.executeScript(“return jQuery.find(“jquery表達(dá)式”)”) |
| 鏈接的全部文字定位 | driver.findElement(By.linkText(“鏈接的全部文字”)); |
| 鏈接的部分文字定位 | driver.findElement(By.partialLinkText(“鏈接的部分文字”)); |
示例
DOM 元素操作
| 鼠標(biāo)單擊(用于按鈕等) | webelement.click(); |
| 鍵盤輸入(用于文本框等) | webelement.setKey("輸入內(nèi)容字符串"); |
更加復(fù)雜的鍵盤,鼠標(biāo)操作
鼠標(biāo)操作事件 1、鼠標(biāo)左鍵點(diǎn)擊
2、鼠標(biāo)右鍵點(diǎn)擊
3.鼠標(biāo)雙擊操作
4. 鼠標(biāo)懸停操作
鍵盤操作事件 1. 普通鍵盤模擬,使用 sendKeys(keysToSend) ,如正常的鍵盤按鍵和 空格,Backspace等;
※ 如果action操作沒有反應(yīng),可以對Action對象調(diào)用perform()方法
總結(jié)
以上是生活随笔為你收集整理的Selenium(2): DOM元素定位、操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全新的小米,从更流畅,更安全,更智慧的M
- 下一篇: 中国智能电饭煲行业运营模式及趋势预测分析