python中selenium模块定位元素的方法

WebDriver8种基本元素定位方式

1.find_element_by_id()

  • 采用id属性进行定位
from selenium import webdriver
import time

browser = webdriver.Firefox()
browser.implicitly_wait(10)
browser.get("http://baidu.com")

browser.find_element_by_id("kw").send_keys("selenium")
#在搜索栏输入selenium
browser.find_element_by_id("su").click()
#点击百度一下

time.sleep(2)
browser.quit()

2.find_element_by_name()

3.find_element_by_class_name()

  • 根据name元素和class的名字进行定位,这两种定位方式和id定位相似,在前端代码中,id、name和class一般都至少会有其中的一种,比如百度的搜索框具有name属性,我们可以用name定位搜索款,class定位百度一下的按钮
from selenium import webdriver
import time

browser = webdriver.Firefox()
browser.implicitly_wait(5)
browser.get("http://baidu.com")

browser.find_element_by_name("wd").send_keys("selenium")
#在搜索栏输入selenium
browser.find_element_by_class_name("s_btn").click()
#点击百度一下

time.sleep(2)
browser.quit()

4.find_element_by_xpath()

  • xpath是XML路径语言,它可以用来确定xml文档中的元素位置,通过元素的路径来完成对元素的查找。HTML就是XML的一种实现方式,所以xpath是一种非常强大的定位方式。
  • xpath也分几种不同类型的定位方法。
    • 绝对路径定位:利用html标签名的层级关系来定位元素的绝对路径,一般从html标签开始依次往下进行查找
    • 元素属性定位:利用id和name属性去定位
    • 两个可以结合使用
#百度搜索框的绝对路径xpath定位
browser.find_element_by_xpath("/html/body/div[1]/div[1]/div/dv[1]/div/form/span[1]/input")
browser.find_element_by_xpath("//input[@id='kw']")
browser.find_element_by_xpath("//*[@name='wd']")
browser.find_element_by_xpath("//form[@id='form']/span/input")

5.find_element_by_css_selector()

  • CSS属性定位可以比较灵活地选择控件的任意属性,定位方式也会比xpath快。
    • 一般class是用.标记,id是用#标记,标签名直接写具体标签名就好了。
    • css定位里面也可以通过属性或者组合方式定位
    • 在css里面下级标签元素用>连接,如果class里面有空格,空格用.进行连接
browser.find_element_by_css_selector(".s_ipt").send_keys("selenium")
browser.find_element_by_css_selector("#su").click()

6.find_element_by_tag_name()

  • find_element_by_tag_name(“input”):通过标签名去定位的方式
    • 仅仅通过标签名去定位时,一般一种标签在一个页面里面会出现不止一次甚至大量出现,这种定位方式的作用不是很大,所以用的也就比较少。

7.find_element_by_link_text()

8.find_element_by_partial_link_text()

  • 专门用于定位超链接的,也就是对应html页面中的a标签,括号里传的值就是a标签中的超链接文字,两者的区别在于一个是完整的超链接文字,一个是可以只写部分超链接文字。
browser.find_element_by_link_text("新闻").click()
browser.find_element_by_partial_link_text("闻").click()

9.find_element_by

  • 需要导入By类:from selenium.webdriver.common.by import By
  • find_element(By.ID,“kw”)
  • find_element(By.NAME,“wd”)
  • find_element(By.CLASS_NAME,“s_ipt”)
  • find_element(By.TAG_NAME,“input”)
  • find_element(By.LINK_TEXT,u" 新闻 ")
  • find_element(By.PARTIAL_LINK_TEXT,u" 新 ")
  • find_element(By.XPATH,"//*[@class=‘bg s_btn’]")
  • find_element(By.CSS_SELECTOR,“span.bg s_btn_wr>input#su”)

elements复数定位

  • id复数定位find_elements_by_id()

  • name复数定位find_elements_by_name()

  • class复数定位find_elements_by_class_name()

  • tag复数定位find_elements_by_tag_name()

  • link复数定位find_elements_by_link_text()

  • partial_link复数定位find_elements_by_partial_link_text()

  • xpath复数定位find_elements_by_xpath()

  • css复数定位find_elements_by_css_selector()

  • 这些复数定位方式每次取到的都是具有相同类型属性的一组元素,所以返回的是一个list队列,我们也可以利用这个去定位单个的元素。比如百度首页种,右上角有新闻、视频、地图、贴吧等一些链接,我们通过f12查看源码可以发现,这些链接都有共同的class, class=“mnav”


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值