selenium 筆記 --- 常用操作【java】

一、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)景:?jiǎn)芜x框草慧,下拉列表,復(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.comwww.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)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市础嫡,隨后出現(xiàn)的幾起案子指么,更是在濱河造成了極大的恐慌,老刑警劉巖榴鼎,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伯诬,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡檬贰,警方通過查閱死者的電腦和手機(jī)姑廉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翁涤,“玉大人桥言,你說我怎么就攤上這事萌踱。” “怎么了号阿?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵并鸵,是天一觀的道長。 經(jīng)常有香客問我扔涧,道長园担,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任枯夜,我火速辦了婚禮弯汰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘湖雹。我一直安慰自己咏闪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布摔吏。 她就那樣靜靜地躺著鸽嫂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪征讲。 梳的紋絲不亂的頭發(fā)上据某,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音诗箍,去河邊找鬼癣籽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛扳还,可吹牛的內(nèi)容都是我干的才避。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼氨距,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼桑逝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起俏让,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤楞遏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后首昔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寡喝,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年勒奇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了预鬓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赊颠,死狀恐怖格二,靈堂內(nèi)的尸體忽然破棺而出劈彪,到底是詐尸還是另有隱情,我是刑警寧澤顶猜,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布沧奴,位于F島的核電站,受9級(jí)特大地震影響长窄,放射性物質(zhì)發(fā)生泄漏滔吠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一挠日、第九天 我趴在偏房一處隱蔽的房頂上張望疮绷。 院中可真熱鬧,春花似錦肆资、人聲如沸矗愧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至夜涕,卻和暖如春犯犁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背女器。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來泰國打工酸役, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人驾胆。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓涣澡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親丧诺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子入桂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容