Selenium3(二)

Selenium3多種元素定位,動態提示判斷操做javascript

  八大元素定位:css

    1)根據id來進行定位
html

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

#昨天代碼中的driver.find_element_by_id('kw')這個代碼就是python中根據id來進行定位

    2)根據Name來進行定位java

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

#driver.find_element_by_name("wd")

    3)根據class_name來進行定位(可能會存在錯誤的狀況,並不惟一class_name)python

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

#driver.find_element_by_class_name("s_ipt")

    4)根據tag_name來進行定位(標籤屬性)web

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
#對應的標籤屬性是input,但在頁面中可能存在多個input的狀況,不經常使用標籤訂位
#driver.find_element_by_tag_name

    5)根據link_text來進行定位(精確連接的文本)數組

<a href="http://news.baidu.com" target="_blank" class="mnav">新聞</a>
#連接文本定位是不能輸入只能點解
#driver.find_element_by_link_text("新聞")

    6)根據partial_link_text來進行定位(模糊連接文本)瀏覽器

<a href="http://news.baidu.com" target="_blank" class="mnav">新聞</a>

#driver.find_element_by_partial_link_text("新聞")

    7)根據Xpath來進行定位ui

<input type="text" class="s_ipt nobg_s_fm_hover" name="wd" id="kw" maxlength="100" autocomplete="off">
#在谷歌瀏覽器中能夠直接copy Xpath 如上標籤的Xpath爲//*[@id="kw"]
#driver.find_element_by_xpath("//*[@id="kw"]")

    8)根據css_selector來進行定位spa

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
//和Xpath同樣,上標籤的爲"#kw"
//driver.find_element_by_css_selector("#kw")

 

詳解Xpath和css(是路徑語言用來肯定某個位子的語言,至關於一個座標)

  Xpath和css:

    屬性定位(能夠根據元素中的id或者name來定位的):

#Xpath
driver.find_element_by_xpath("//*[@id="kw"]") //這個就是用屬性來定位 #"//*[@id="kw"]" //------//*表明全部標籤 //------[@id="kw"] 查詢id爲kw的元素   
// CSS
driver.find_element_by_css_selector("#kw")
//在CSS中直接用.加上class屬性名就能夠了定位了,i#加上id名進行查找,以標籤來定位是直接用標籤名

    其餘屬性:

//XPach
<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
//driver.find_element_by_xpach("//*[@autocomplete="off"]")
// CSS
driver.find_element_by_css_selector("[autocomplete='off']")

    標籤訂位(標籤很容易重複只有和其餘屬性進行混合使用):

//XPach
<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
//driver.find_element_by_xpach("//input[@autocomplete="off"]")
//把*更改成標籤
// CSS
driver.find_element_by_css_selector("input#kw")

    層級定位:

<form name="f" id="form" action="/s" class="fm" onsubmit="javascript:F.call('ps/sug','pssubmit');">
<span id="s_kw_wrap" class="bg s_ipt_wr quickdelete-wrap">
<span class="soutu-btn"></span><input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
<a href="javascript:;" id="quickdelete" title="清空" class="quickdelete" style="top: 0px; right: 0px; display: none;"></a>
</span><input type="hidden" name="rsv_spt" value="1"><input type="hidden" name="rsv_iqid" value="0xd36c478c00042bb2">
<input type="hidden" name="issp" value="1">
<input type="hidden" name="f" value="8">
<input type="hidden" name="rsv_bp" value="0">
<input type="hidden" name="rsv_idx" value="2">
<input type="hidden" name="ie" value="utf-8">
<input type="hidden" name="rqlang" value="">
<input type="hidden" name="tn" value="baiduhome_pg">
<input type="hidden" name="ch" value="">
<span class="btn_wr s_btn_wr bg" id="s_btn_wr">
<input type="submit" value="百度一下" id="su" class="btn self-btn bg s_btn"></span>
<span class="tools">
<span id="mHolder">
<div id="mCon"><span>輸入法</span>
</div><ul id="mMenu">
<li><a href="javascript:;" name="ime_hw">手寫</a>
</li><li><a href="javascript:;" name="ime_py">拼音</a></li>
<li class="ln"></li>
<li><a href="javascript:;" name="ime_cl">關閉</a></li></ul>
</span><span class="bd_bear_home"></span></span>
<input type="hidden" name="rsv_enter" value="1">
</form>
//XPach
//driver.find_element_by_xpach("//form[@id='form'/span/input]")
// CSS
driver.find_element_by_css_selector("form#form>span>input")
//以>分割標籤

    索引定位(在同一個層級下同標籤):

<div id="u_sp" class="s-isindex-wrap s-sp-menu">
 <a href="http://news.baidu.com" target="_blank" class="mnav">新聞</a> <a href="https://www.hao123.com" target="_blank" class="mnav">hao123</a> 
<a href="http://map.baidu.com" target="_blank" class="mnav">地圖</a>
<a href="http://v.baidu.com" target="_blank" class="mnav">視頻</a>
<a href="http://tieba.baidu.com" target="_blank" class="mnav">貼吧</a> 
<a href="http://xueshu.baidu.com" target="_blank" class="mnav">學術</a><a id="s_username_top" class="s-user-name-top" data-tid="2004" href="http://i.baidu.com/" target="_blank">
<span class="user-name">手冢卿楓</span></a>
<a id="s_usersetting_top" href="javascript:;" name="tj_settingicon" class="pf s-user-setting-top">
<span class="setting-text">設置</span></a>
<a href="http://www.baidu.com/more/" name="tj_briicon" class="s_bri" target="_blank"> 更多產品</a><div id="s_user_name_menu" class="s-isindex-wrap s-user-set-menu menu-top" style="display:none;"><div> <a href="http://i.baidu.com/center" target="_blank" data-tid="1000"> 我的中心 </a> 
<a href="http://passport.baidu.com/" data-tid="1001" target="_blank"> 賬號設置 </a> <a class="s-feedback" style="overflow:hidden" href="#" onclick="return false;">意見反饋</a> 
<a class="quit" style="overflow:hidden" href="#" onclick="return false;"> 退出 </a> 
</div> 
<span class="menu-arrow"> <em></em> </span> </div>
//XPach
//driver.find_element_by_xpach("//div[@id='u1'/a[1]]").click
//座標以1開頭,進入新聞頁面
// CSS
driver.find_element_by_css_selector("div#u1>a:nth-child(1)").click()
//以>分割標籤

    模糊匹配(css模糊匹配語法已廢除):

//XPach
//driver.find_element_by_xpach("//*[contains(text(),'新聞')]").click
//driver.find_element_by_xpach("//*[contains(@id,kw)]").click

 

八種定位方法(以複數形式定位的):

  以複數形式定位是指在html中存在多個屬性元素,查詢到的是一個數組類型的列表

<div id="u_sp" class="s-isindex-wrap s-sp-menu">
 <a href="http://news.baidu.com" target="_blank" class="mnav">新聞</a> 
<a href="https://www.hao123.com" target="_blank" class="mnav">hao123</a> <a href="http://map.baidu.com" target="_blank" class="mnav">地圖</a> <a href="http://v.baidu.com" target="_blank" class="mnav">視頻</a> <a href="http://tieba.baidu.com" target="_blank" class="mnav">貼吧</a> <a href="http://xueshu.baidu.com" target="_blank" class="mnav">學術</a><a id="s_username_top" class="s-user-name-top" data-tid="2004" href="http://i.baidu.com/" target="_blank"> <span class="user-name">手冢卿楓</span></a> <a id="s_usersetting_top" href="javascript:;" name="tj_settingicon" class="pf s-user-setting-top"> <span class="setting-text">設置</span></a> <a href="http://www.baidu.com/more/" name="tj_briicon" class="s_bri" target="_blank"> 更多產品</a><div id="s_user_name_menu" class="s-isindex-wrap s-user-set-menu menu-top" style="display:none;"><div> <a href="http://i.baidu.com/center" target="_blank" data-tid="1000"> 我的中心 </a> <a href="http://passport.baidu.com/" data-tid="1001" target="_blank"> 賬號設置 </a> <a class="s-feedback" style="overflow:hidden" href="#" onclick="return false;">意見反饋</a> <a class="quit" style="overflow:hidden" href="#" onclick="return false;"> 退出 </a> </div> <span class="menu-arrow"> <em></em> </span> </div>
mnav=driver.find_elements_by_xpath("//a[@class='mnav']")
print(len(mnav))

 

其餘兩種定位方式:

  單數形式: 

driver.find_element(by='id',value='kw').send_keys('selenium')

  複數形式:

mnav=driver.find_elements(by='class name',value='mnav')
print(len(mnav))

 

Selenium簡單操做:

  1)點擊頁面按鈕:click()

  2)清空輸入框:clear()

  3)輸入字符串:send_keys()

  4)提交表單:submit()

Selenium鍵盤操做:

  1)from selenium.webdriver.common.keys import Keys

  2)enter鍵:send_keys(Keys.ENTER)

  3)jianpanF1到F12:send_keys(Keys.F1)

  4)複製CTRL+C:send_keys(Keys.CONIROL,'c')

  5)粘貼CTRL+V:send_keys(Keys.CONIROL,'v')

  6)全選CTRL+A:send_keys(Keys.CONIROL,'a')

  7)剪切CTRL+X:send_keys(Keys.CONIROL,'x')

  8)製表符TAB:send_keys(Keys,TAB)

Selenium鼠標懸停事件:

  1)from  selenium.webdriver.common.action_chains import ActionChains

  2)鼠標懸停:move_to_element(元素對象)

  3)右擊鼠標:context_click()

  4)雙擊鼠標:double_click()

  

  

文章連接地址:http://mumuling.com/?p=82  

相關文章
相關標籤/搜索