总结-webdriver元素定位

1.元素定位

 

from selenium import webdriver
b=webdriver.Firefox()
b.get('http://www.baidu.com')
b.maximize_window()   #窗口最大化
b.title    #获取当前网页标题
b.current_url   #获取当前网页URL
ele=b.find_element_by_id('kw')   #通过id查找元素
ele=b.find_element_by_name('wd')   #通过name查找元素
ele=b.find_element_by_class_name('s_ipt')   #通过class_name查找元素

 

 

 

#<li>
#  <a href="/land/pm/" alt="产品经理">产品经理</a>
#<li>

ele=b.find_element_by_link_text('产品经理')  #通过文本查找相关元素
ele.click()    #点击
ele1=b.find_element_by_partial_link_text('品经理')  #通过文本模糊查找相关元素
ele1.click()    #点击

ele.id   #-->'881b1f2d-9e83-493c-8792-bb4fae7c7517'
ele1.id  #-->'881b1f2d-9e83-493c-8792-bb4fae7c7517'

 

#百度输入框 :<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
ele=b.find_element_by_css_selector('input[id="kw"]')  #属性id='kw'的元素input 区分大小写  []里的语法为python中的re
ele.clear()    #清空元素内容
ele.send_keys('水果')   #模拟按键输入

 

2.xpath元素定位

 

 

 

 

 

#文件:file:///D:/seleniumtest/test.html
<html>
    <head>
    it's head
        <title>selenium</title>
    </head>

    <p>
    age
        <input type="text" name="age">
    </p>
    <body>
        <form>
        firstname
            <input type="text" name="firstname" id='test'>
            <br />
        lastname
            <input type="text" name="lastname">
        </form>

    </body>
</html>

 

from selenium import webdriver
b=webdriver.Firefox()
b.get(r'file:///D:/seleniumtest/test.html')

#/xxx  选取根节点
ele=b.find_element_by_xpath('/html')                     

#/xxx/yyy  根据绝对路径选择元素  ,如果有多个,默认取第一个
ele=b.find_element_by_xpath('/html/body/form/input')     
ele=b.find_element_by_xpath('/html/body/form/input[2]')  
ele.get_attribute('name')

# //xxx  整个文档扫描,找到所有的xxx元素
ele=b.find_element_by_xpath('//input')                 
ele=b.find_element_by_xpath('//input[2]')
#最多找2个元素,继续查找第三个报错
ele=b.find_element_by_xpath('//input[3]')               

#//xxx/yyy 查找所有父元素为xxx的yyy元素
ele=b.find_element_by_xpath('//form/input')      
#选择input父元素的地址
ele=b.find_element_by_xpath('//form/input/..')   
ele.tag_name                         

#///xxx[@id]选取所有xxx元素中有id属性的元素
ele=b.find_element_by_xpath('//input[@id]')        
#///xxx[@id=yyy]选取所有xxx元素id属性为yyy的元素
ele=b.find_element_by_xpath('//input[@name="firstname"]')  

#//*[count(xxx)=2]   统计xxx元素个数=2的节点
ele=b.find_element_by_xpath('//*[count(input)=2]')  
ele.tag_name         #-->'form'
ele=b.find_element_by_xpath('//*[count(input)=2]/..')
ele.tag_name         #-->'body'

# //*[local-name()='xxx'  找到tag为xxx的元素
ele = b.find_element_by_xpath('//*[local-name()="input"]')                   
ele.get_attribute('name')    #-->'age'

# //*[starts-with(local-name(),'x')]  找到所有tag以x开头的元素
ele =  b.find_element_by_xpath('//*[starts-with(local-name(),"inp")]')       
ele.get_attribute('name')    #-->'age'

#//*[contains(local-name(),'x')]  找到所有tag包含x的元素
ele = b.find_element_by_xpath('//*[contains(local-name(),"npu")]')            
ele.get_attribute('name')    #-->'age'
#last()查找最后一个  last()-1 倒数第二个
ele = b.find_element_by_xpath('//form//*[contains(local-name(),"i")][last()]')   
ele.get_attribute('name')    #-->'lastname

#//*[string-length(local-name()) = 5]  找到所有tag长度为5的元素
ele=b.find_element_by_xpath('//*[string-length(local-name())=5]')             
ele.tag_name                 #-->'title'
ele=b.find_element_by_xpath('//form/*[string-length(local-name())=5]')
ele.get_attribute('name')    #-->'firstname'

#//xxx | //yyy    多个路径查找,按顺序查找,找到返回,找不到继续下一个路径查找
ele=b.find_element_by_xpath('//title|//input[last()]')                         
ele.tag_name                 #-->'title'
ele=b.find_element_by_xpath('//title2222|//input')
ele.tag_name                 #-->'input'
posted @ 2019-09-17 19:47  五彩斑斓的黑~  阅读(40)  评论(0)    收藏  举报