久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Selenium(四)——webdriver 之定位頁(yè)面元素

 yzqwqp 2013-10-21

轉(zhuǎn)自http://blog.sina.com.cn/s/blog_6966650401012a6u.html

selenium-webdriver提供了強(qiáng)大的元素定位方法,,支持以下三種方法:
單個(gè)對(duì)象的定位方法
多個(gè)對(duì)象的定位方法
層級(jí)定位

注意:

selenium-webdriver通過findElement()\findElements()等f(wàn)ind方法調(diào)用"By"對(duì)象來定位和查詢?cè)?。By類只是提供查詢的方式進(jìn)行分類,。findElement返回一個(gè)元素對(duì)象否則拋出異常,,findElements返回符合條件的元素 List,,如果不存在符合條件的就返回一個(gè)空的list,。

一,、定位單個(gè)元素
A.使用className進(jìn)行定位
當(dāng)所定位的元素具有class屬性的時(shí)候我們可以通過classname來定位該元素。
例:下面的例子定位頁(yè)面上class為"username"的li,。
WebElement element = driver.findElement(By.className("username"));
System.out.println(element.getTagName());

輸出結(jié)果:Li

B.使用id屬性定位
例:<input id="passport_user" type="text" value="" title="用戶名/郵箱" name="passport_user">
WebElement element = dr.findElement(By.id("passport_user"));
System.out.println(element.getAttribute("title"));

輸出結(jié)果:用戶名/郵箱

C.使用name屬性定位
例:<input id="passport_user" type="text" value="" title="用戶名/郵箱" name="passport_user">
WebElement e = dr.findElement(By.name("passport_user"));

D.使用css屬性定位
例:<input id="passport_user" type="text" value="" title="用戶名/郵箱" name="passport_user">
WebElement e1 = dr.findElement(By.cssSelector("#passport_user"));
詳解:
1.css之后代選擇器
<p>
<em>location1</em>
</p>
<ol>
<li><em>location2</em></li>
</ol>
可以通過css=p em這個(gè)可以選中文本為location1的em元素
css=ol em這個(gè)可以選中文本為location2的em元素
css后代選擇器和xpath中//div//a一樣:取得所有div下面所有的a節(jié)點(diǎn),。這個(gè)是忽略了父子節(jié)點(diǎn)
<div>
<p><em>location1</em></p>
</div>
<div>
<ol>
<li><strong><em>location2</em></strong></li>
<li><em>location3</em></li>
<li><em>location4</em></li>
</ol>
</div>
可以通過css=p>em來定位location1
css之父子節(jié)點(diǎn)選擇器給后代選擇器加了一個(gè)限制,類似xpath中//div/p/em:所有div下的子元素p的子元素em,。
css=li+li em來定位location3,,location4的em
css=li+strong+em來定位文本為location2的em
2.css之id選擇器
<input id="location1" type="button"/>
<input id="location2" type="radio"/>
通過css=#location1來定位type為button的按鈕
通過css=#location2來定位type為radio的單選框
3.css之類選擇器
<input class="location1" type="button" value="確定"/>
<input class="location2" type="button" value="取消"/>
通過css=input.location1來選擇value值為確定的按鈕
通過css=input.location2來選擇value值為取消的按鈕
4.css之屬性選擇器
<input class="location1" type="button" value="確定"/>
<input class="location2" type="button" />
通過css=[class=location1]可以定位第一個(gè)按鈕
通過css=[class~=1]可以定位第一個(gè)按鈕
通過css=[value="確定"]可以定位第一個(gè)按鈕
通過css=input[class="location"]可以定位第二個(gè)按鈕

E.按標(biāo)記(tag)名稱查找
元素的DOM標(biāo)記名稱
<iframe src=\'#\'" /iframe>
WebElement frame = driver.findElement(By.tagName("iframe"));
F.按鏈接文本查找
<a >cheese</a>>
WebElement cheese = driver.findElement(By.linkText("cheese"));
按部分鏈接文本查找
<a >search for cheese</a>>
WebElement cheese = driver.findElement(By.partialLinkText("cheese"));
G.使用 XPATH定位
例:<input id="passport_user" type="text" value="" title="用戶名/郵箱" name="passport_user">
WebElement element =dr.findElement(By.xpath("http://input[@id='passport_user']"));
parent::返回父節(jié)點(diǎn)
following::返回此節(jié)點(diǎn)后面的兄弟節(jié)點(diǎn)
preceding::返回此節(jié)點(diǎn)前面的兄弟節(jié)點(diǎn)
div>
<input id="location1" type="button" />
<input type="button" />
</div>
通過id為location1可以很隨意的定位到兄弟節(jié)點(diǎn)
//div/input[@id='location1']/following::input
也可以通過location1很隨意的定位到父類節(jié)點(diǎn)div。
//div/input[@id='location1']/parent::div,。
也可以通過索引為2的input定位到id為location1的input
//div/input[2]/preceding-sibling::input
有幾個(gè)非常有用的Firefox插件,,有助于發(fā)現(xiàn)一個(gè)元素的XPath:
XPath Checker - suggests XPath and can be used to test XPath results.
Firebug - XPath suggestions are just one of the many powerful features of this very useful add-on.
XPath Checker - 建議XPath并可以用于測(cè)試XPath的結(jié)果
Firebug - XPath建議僅僅是這非常有用的插件的許多強(qiáng)有力特征中的一個(gè)。
二,、定位多個(gè)元素
//定位到所有<input>標(biāo)簽的元素,,然后輸出他們的id
List<WebElement> element = driver.findElements(By.tagName("input"));
for (WebElement e : element)
System.out.println(e.getAttribute("id"));

三,、層級(jí)定位
層級(jí)定位的思想是先定位父元素,然后再?gòu)母冈刂芯_定位出其我們需要選取的子元素,。
層級(jí)定位一般的應(yīng)用場(chǎng)景是無法直接定位到需要選取的元素,,但是其父元素比較容易定位,通過定位父元素再遍歷其子元素選擇需要的目標(biāo)元素,,或者需要定位某個(gè)元素下所有的子元素,。

下面的代碼演示了如何使用層級(jí)定位class為"login"的div,然后再取得它下面的所有l(wèi)abel,,并打印出他們的文本
//定位class為"login"的div,,然后再取得它下面的所有l(wèi)abel,并打印出他們的值
WebElement element = driver.findElement(By.className("login"));
List<WebElement> el = element.findElements(By.tagName("label"));
for(WebElement e : el)
System.out.println(e.getText());
四,、使用Javascript
你可以執(zhí)行任何Javascript,,以找到一個(gè)元素,只要你找到一個(gè)DOM元素,,它將自動(dòng)轉(zhuǎn)換為WebElement對(duì)
象,。
WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript("return
$('.cheese')[0]");

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多