東莞網(wǎng)站排名價格/人民政府網(wǎng)站
引言:
WebDriver隱式等待是一種全局性的等待方式,它會在查找元素時設(shè)置一個固定的等待時間。當(dāng)使用隱式等待時,WebDriver會在查找元素時等待一段時間,如果在等待時間內(nèi)找到了元素,則立即執(zhí)行下一步操作;如果超過等待時間仍未找到元素,則拋出NoSuchElementException異常。
其元素定位8種方法
1.通過id或name定位
<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">#通過元素所帶的id和name屬性對元素定位:
brower.find_element_by_id("kw")
brower.find_element_by_name("wd")
2.通過class name或tag name定位
<div class="jstEditor">
<textarea cols="60" rows="10" accesskey="e" class="wiki-edit" name="issue[description]" id="issue_description">
</textarea>
</div>通過元素中帶的class屬性定位
brower.find_element_by_class_name("iki-edit")通過元素中的tag標(biāo)簽定位,這種定位方式極不靠譜,不推薦采取此種方式。
brower.find_element_by_tag_name("div")附加說明,如果class屬性含有空格,那么取其中一個不重復(fù)的字段就可以了,例子:
<a title="新建版本" tabindex="200" class="icon-only icon-add" data-remote="true" data-method="get" href="/projects/bk_community/versions/new">新建版本</a>其中class的屬性值為“icon-only icon-add”,取其中“icon-only”、“ icon-add”都可以,但最好是取其中唯一的。
brower.find_element_by_class_name("icon-add")
3.通過link text和partial link text定位
<a href="http://news.baidu.com" target="_blank" class="mnav">新聞</a>
通過text link定位元素
brower.find_element_by_link_text("新聞")通過partial link text定位元素,當(dāng)文字鏈接很長時,可以通過此方式取其中一部分,只要取的部分可以作為唯一標(biāo)識。brower.find_element_by_partial_link_text("新")
4.xpath定位
此種定位方式需知曉xpath路徑,通過火狐瀏覽器就可以知道,具體如何操作,可參考我的另一篇博文https://blog.csdn.net/qq_30990097/article/details/81325681調(diào)用的方法為:brower.find_element_by_xpath("/html/body/div[1]/div/div[2]/ul/li[2]")
也可以通過相對路徑自行填寫,例如://*[@id="su"]/form/span/input #通過上三級目錄的id屬性定位當(dāng)然也可以通過某一級的name屬性定位。
5.CSS定位
css定位有點(diǎn)麻煩,方法很多。以百度輸入框html代碼為例:<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
定義瀏覽器
from selenium import webdriver
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/")
6.通過id或class屬性定位,方法見代碼注釋
#css通過id屬性定位,用#號表示id屬性browser.find_element_by_css_selector("#kw").send_keys("css通過id屬性定位")#css通過class屬性定位,用.表示class屬性browser.find_element_by_css_selector(".s_ipt").clear()
7.通過標(biāo)簽定位
#css通過標(biāo)簽屬性定位,無任何標(biāo)識符,最好加上一個固定屬性,否則會出錯browser.find_element_by_css_selector("input[class=s_ipt]").send_keys("css通過標(biāo)簽屬性定位")browser.find_element_by_css_selector("input#kw").send_keys("css通過標(biāo)簽屬性定位")通過其他屬性定位#css通過其他屬性定位browser.find_element_by_css_selector("[name='wd']").send_keys("css通過name屬性定位")browser.find_element_by_css_selector("[autocomplete='off']").clear()通過css層級關(guān)系定位還是以百度的輸入框html代碼為示例:定位代碼:#css層級關(guān)系browser.find_element_by_css_selector("form#form>span>input").send_keys("通過層級定位")browser.find_element_by_css_selector("form.fm>span>input").clear()
8. 通過css索引定位
示例html代碼:定位代碼:#通過css索引定位browser.find_element_by_css_selector("select.pagination-page-list>option:nth-child(1)").click()