日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Selenium(2): DOM元素定位、操作

發(fā)布時間:2024/1/8 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Selenium(2): DOM元素定位、操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
DOM 元素定位

定位過程
  • 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(“鏈接的部分文字”));

※ 如果使用 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 元素操作

    鼠標(biāo)單擊(用于按鈕等)

    webelement.click();
    鍵盤輸入(用于文本框等) webelement.setKey("輸入內(nèi)容字符串");
    示例
  • 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();
  • 2、鼠標(biāo)右鍵點(diǎn)擊
  • 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();
  • 3.鼠標(biāo)雙擊操作
  • Actions action = new Actions(driver);
  • // 鼠標(biāo)雙擊擊指定的元素
  • action.doubleClick());
  • // 鼠標(biāo)在坐標(biāo)為(300,400)位置做雙擊操作
  • action.moveByOffset(300,400).doubleClick();
  • 4. 鼠標(biāo)懸停操作
  • 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()方法



    總結(jié)

    以上是生活随笔為你收集整理的Selenium(2): DOM元素定位、操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。