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'