Selenium:定位(二:By模块定位,简单无基础)

这篇具有很好参考价值的文章主要介绍了Selenium:定位(二:By模块定位,简单无基础)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、简介:

二、BY模块

三、find_element方法和find_elements方法

1)、find_element方法和find_elements方法的区别

2)、find_element方法和find_elements方法搭配BY模块使用

        (1)find_element方法:

        (2)find_elements方法:

三、测试用例

1)、定位逻辑

2)、实际用例

测试代码


一、简介:

        Selenium是通过模拟人对浏览器进行操作,既然是模拟人进行操作,那么就需要选择对页面上的哪一个标签进行操作。例如想让Selenium对页面上的登录按钮进行点击,就需要先让Selenium定位到这个按钮,在进行点击操作。

        我们把整个页面(HTML标签)看作是地球,HTML标签的子集标签看做是国家,

子集标签的子集标签看做是城市。当我们想要定位重庆时,我们以地球为根节点出发,选择中国子节点,在选择中国子节点下的重庆字节的。

二、BY模块

        selenium的by模块提供了八种定位方式。

        通过from selenium.webdriver.common.by import By导入By模块。

标签的id属性值进行定位使用: By.ID
通过标签的name属性值进行定位使用: By.NAME
通过标签的class属性值进行定位使用: By.CLASS_NAME
通过标签的标签中文本值进行定位使用: By.LINK_TEXT
通过标签的标签中的部分文本值进行定位使用: By.PARTIAL_LINK_TEXT
通过标签的标签名进行定位使用: By.TAG_NAME
通过标签的xpath路径进行定位使用: By.XPATH
通过标签的css选择器进行定位使用: By.CSS_SELECTOR

三、find_element方法和find_elements方法

        通过webdriver调用这两种方法搭配BY模块进行定位可以解决大部分的定位需求。

        find_element(by模块,'属性值')

         find_elements(by模块,'属性值')

1)、find_element方法和find_elements方法的区别

        find_element只返回一个选中的标签,即有多个满足条件的标签值返回第一个。
        find_elements返回的是一个列表,可以满足多个满足条件的标签,注意返回的是列表,让要对其中的标签进行操作需要指定列表元素的下标。

2)、find_element方法和find_elements方法搭配BY模块使用

        例如有两个个标签:

        <a id='id1' class='class' >111</a>

         <a id='id2' class='class' >222</a>

        (1)find_element方法:

        定位第一个a标签:

使用By.ID和标签id属性去定位

find_element(By.ID, 'id1')

使用By.CLASS_NAME和标签class属性去定位(有多个满足。但只匹配第一个)

find_element(By.CLASS_NAME, 'class')

        定位第二个a标签:
                

使用By.ID和标签id属性去定位

find_element(By.ID, 'id2')

        (2)find_elements方法:

        定位第一个a标签:

使用By.ID和标签id属性去定位(返回是列表,记得下标)

find_elements(By.ID, 'id1')[0]

使用By.CLASS_NAME和标签class属性去定位(返回是列表,记得下标)

find_elements(By.CLASS_NAME, 'class')[0]

         定位第二个a标签

使用By.ID和标签id属性去定位(返回是列表,记得下标)

find_elements(By.ID, 'id2')[0]

使用By.CLASS_NAME和标签class属性去定位(返回是列表,记得下标)

find_elements(By.CLASS_NAME, 'class')[1]

三、测试用例

1)、定位逻辑

        假如我们有如下节点,我们像定位到中国重庆下的巴南标签,那我们是不是得选定位中国下的重庆,在去定位中国重庆下的巴南,这样才能准确的定位到我们想要的元素,以XPATH写法为演示则是:/中国/重庆/巴南。

        <中国>

                <重庆>

                        <渝北></渝北>

                        <巴南></巴南>

                </重庆>

                <天津市>

                        <和平区></和平区>

                        <河西区></河西区>

                </天津市>

                <上海市>

                        <黄浦区></黄浦区>

                        <徐汇区></徐汇区>

                </上海市>

        </中国>

2)、实际用例

我们进入百度的网页,按F12进入开发者模式

selenium by,Selenium:浏览器爬虫使用详解,爬虫,Selenium,selenium,爬虫,python

 比如我们想拿这个标签里的’贴吧‘两字,我们是不是得先定位到这个a标签。

那我们先分析一下这不标签所在的路径。这个a标签的的父级是div标签,div标签的父级也是一个div标签,再往前走一级是还是一个div标签,再再往前走一级是一个body标签,再再再往上走一级到了根节点html标签,那么它的路径就确定下来了,html -> body ->div ->div ->div -> a,如图

selenium by,Selenium:浏览器爬虫使用详解,爬虫,Selenium,selenium,爬虫,python

 我们以XPATH写法为例子:我们以 . 代表当前页面,./html/body/div,在这我们定位4这个位置,在往下我们要定位到3去,但我们发现4下面有多个div标签。

selenium by,Selenium:浏览器爬虫使用详解,爬虫,Selenium,selenium,爬虫,python

 而我们要去的是它下面的第二个div,这时候我们就得去指定它:

第一种方法:./html/body/div/div[2] 给它一个下标,代表我们选择./html/body/div下面的第二个div。

第一种方法:在我们想要选取的div里面不是有个属性id嘛,selenium by,Selenium:浏览器爬虫使用详解,爬虫,Selenium,selenium,爬虫,python,我们在定位标签的时候加上它的属性./html/body/div/div[@id="head"]。

再往下定位也是一样的逻辑,指定我们想要选择的标签:

./html/body/div/div[@id="head"]/div[@class="s-top-left-new s-isindex-wrap"]/a[4]

XPah语法

XPath 语法 | 菜鸟教程文章来源地址https://www.toymoban.com/news/detail-791537.html

测试代码

from selenium import webdriver
from selenium.webdriver.common.by import By
# 创建浏览器驱动对象,Chrome()代表是谷歌浏览器的驱动
driver = webdriver.Chrome()
#打开网页
driver.get('https://www.baidu.com/')
#定位到指定标签
_blank = driver.find_element(By.XPATH,
    './html/body/div/div[@id="head"]/div[@class="s-top-left-new s-isindex-wrap"]/a[4]'
)
#打印标签的文本内容
print(_blank.text)

到了这里,关于Selenium:定位(二:By模块定位,简单无基础)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包