WebDriver API元素的定位
一、以下截圖為用FireBug定位的用火狐(Firefox)瀏覽器打開的百度首頁,下面所講述的八種定位方法,就是以該截圖中的百度輸入框?yàn)槔印?/span>
? ? ? ①、FireBug是Firefox瀏覽器下的開發(fā)類插件,通過該插件可以查看HTML、CSS、Javascript控制臺(tái)、網(wǎng)絡(luò)狀況監(jiān)視器、Cookies,具體內(nèi)容如下面截圖中的工具欄。
? ? ? 通過它可以方便的查看頁面上的元素,根據(jù)元素路徑或是標(biāo)簽或是屬性進(jìn)行定位。
? ? ? FireBug安裝方式:Firefox瀏覽器的菜單欄中選中tools(工具)-->add-ons Manager(添加組件),搜索FireBug;進(jìn)行安裝重啟,然后在工具欄中看到Firebug的按鈕。
? ? ? ②、FirePath是FireBug插件擴(kuò)展的一個(gè)工具,用來編輯、檢查和生成的XPath表達(dá)式、CSS選擇器。通過XPath和CSS可快速定位頁面上的元素。如下圖所示:
?
二、首先,我們一起來分析一下 下面的這幾行代碼
? ? ??<input?id="kw"?class="s_ipt"?autocomplete="off"?maxlength="255"?value=""?name="wd">
? ? ? ①其標(biāo)簽(tag)名為input;
? ? ? ②里面有多個(gè)屬性,包括id、class、name、value
?
? ? ? <a?class="mnav"?href="http://news.baidu.com">新聞</a>
? ? ? ③標(biāo)簽對(duì)<a></a>之間有文本(text)數(shù)據(jù)
?
?
三、WebDriver的八種元素定位方法:
1、通過id屬性定位百度的輸入框 ?find_element_by_id("kw")
? ??id在HTML文檔中必須是唯一的,可以想象成學(xué)生在學(xué)校的學(xué)號(hào),公民的身份證號(hào)。
2、通過name屬性定位百度的輸入框 find_element_by_name("wd")
3、通過class屬性定位百度的輸入框 ?find_element_by_class("s_ipt")
4、通過tag屬性定位 ?find_element_by_tag_name("input")
5、通過link定位(既通過標(biāo)簽對(duì)之間的文本信息進(jìn)行定位) ? find_element_by_link_text("新聞")
6、通過partial link定位,它是對(duì)link定位的一種補(bǔ)充
? ? ?例,代碼如下:<a?class="mnav"?href="http://news.baidu.com">這是今天的當(dāng)日新聞</a>
? ? ?find_element_by_link_text("當(dāng)日新聞")
7、通過XPath定位
? ? ?①絕對(duì)路徑定位(很不推薦該種定位方法,若頁面樣式稍微有點(diǎn)變化,元素就很容易找不到) ?
? ? ?通過該種方法定位百度輸入框 find_element_by_xpath(“/html/body/div/div/div/div/div/form/span/input”)
? ? ?②通過標(biāo)簽(tag)名字和元素屬性值定位
? ? ?定位百度輸入框 ?find_element_by_xpath(“//input[@id='kw']”) 或是 find_element_by_xpath("//*[id='kw']")
8、CSS定位
? ? ?①通過class屬性來定位百度輸入框 find_element_by_css_selector(".s_ipt") ? ? 注:"."表示class屬性? ? ? ?
? ? ?②通過id屬性來定位百度輸入框 ? ? ?find_element_by_css_selector("#kw") ? ? ? 注:"#"表示id屬性
? ? ?③通過標(biāo)簽名(tag)來定位 ? ? ? ? ? ? find_element_by_css_selector("input") ? ? ?注:用標(biāo)簽名(tag)定位元素不需要任何符號(hào)標(biāo)識(shí)
? ? ? ? 標(biāo)簽名重復(fù)的概率很大,通過該種方式很難直接找到想要的元素
? ? ?④通過父子關(guān)系定位 ? ?父親元素的標(biāo)簽名為form,查找它的所有標(biāo)簽名為input的子元素:
? ? ? ? find_element_by_css_selector("form>input") ? ? ? ? ? ? ?注:">"代表父子關(guān)系
? ? ?⑤通過屬性定位 ?find_element_by_css_selector("[type='submit']")
? ? ?⑥通過組合定位 ?定位百度輸入框?find_element_by_css_selector("form.fm>span>input.s_ipt")
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 或是find_element_by_css_selector("form#form>span>input#kw")
?
?
若文中內(nèi)容有誤,希望大家指正,謝謝。
?
轉(zhuǎn)載于:https://www.cnblogs.com/zhengyihan1216/p/6055903.html
總結(jié)
以上是生活随笔為你收集整理的WebDriver API元素的定位的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dll文件是什么
- 下一篇: [水煮 ASP.NET Web API2