元素定位方式

​​​​​​如何选择定位方式:

1.当页面元素有id属性时且id属性不变,最好尽量用by_id来定位。

2.XPath很强悍,但定位性能不是很好,所以还是尽量少用。如果确实少数元素不好定位,那还是选择XPath或cssSelector。

3.当有链接需要定位时,可以考虑使用by_link_text或by_partial_link_text(推荐)

Selenium官网的Document里极力推荐使用CSS locator

 

 第一步先导入

from selenium import webdriver

driver = webdriver.Chrome()

driver.get('http://www.baidu.com')

 元素定位

根据id定位
    driver.find_element_by_id('kw')

    根据name定位
    driver.find_element_by_name('wd')

    根据class定位
    driver.find_element_by_class_name('s_ipt')

    通过tag_name来定位元素,因为标签不止一个因此常和 find_elements 一起使用
    find_elements 返回的是一个列表,列表内是所有满足条件的元素
    data = driver.find_elements_by_tag_name('a')


    根据超链接的文字进行定位,只能定位链接文本   link_text
    driver.find_element_by_link_text('新闻')

    通过超链接的部分文本信息进行定位
    driver.find_element_by_partial_link_text("新")

xpath元素定位

xpath的语法:
        /:表示从根目录开始  (一般不会使用)
        //:表示从相对路径开始
        @:表示选取属性

    1.标签+属性进行xpath定位
        //标签名[@属性名=属性值]
        例如:定位百度首页的输入框标签
            //input[@autocomplete="off"]

    2.层级定位
        //标签名[@属性名=属性值]/子标签名  只找标签名下面的子标签,不包含更下一层的标签
        //标签名[@属性名=属性值]//子标签名   找到该标签名下面所有符合规则的子标签名

    3.索引定位  索引从 1 开始 只查找平级标签
        //标签名/子标签名[索引值]
        例如:定位百度的input标签
            //form[@action="/s"]/input[2]

    4.模糊匹配
        //标签名[contains(@属性名,部分属性值)]
        例如:定位百度首页的logo标签
            //a[contains(@id,"result_")]


    5.多条件查找
        //标签名[@属性1=属性值1 and @属性2=属性值2]
        例如:定位百度的input标签
            //input[@type="hidden" and @name="rn"]

CSS元素定位

导入

from selenium import webdriver

from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
标签+属性定位
        标签名[属性名=属性值]
        例如:input[id="kw"]

        类选择器: .class名
        id选择器: #id值

    2.层级
        标签名[属性名=属性值] 子标签    包含选择器会选择子标签以及子标签下面的标签
        标签名[属性名=属性值]>子标签    只会选择该标签下的子标签

        例如:form[id='form'] input

    3.索引
        标签名[属性名=属性值] :nth-child(索引值)     只要标签名下面是第索引个标签的都会找到

        标签名[属性名=属性值]>:nth-child(索引值)     只找标签名下面的第索引个标签

        例如:form[id='form']>:nth-child(1)

    4.模糊匹配
        标签名[属性名*=部分属性值]

        例如:input[autocomplete*="of"]

    5.多条件查找
        标签名[属性名1=属性值1][属性名2=属性值2]
        例如:input[type="hidden"][name="f"]语法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值