Python3+Selenium界面自动化-03-元素定位(id,name)

元素定位的方式

上一节已经可以成功的让浏览器跑起来,但只是简单的打开一个百度网址,那现在就真正的模拟一个用户去操作浏览器。

在selenium中一直有八大定位方式,分别是:
id,
name,
class_name,
tag_name,
link_text,
partial_link_text,
css_selector,
xpath

百度首页

通过id定位

上图是百度首页,我们通过百度首页来介绍这八种定位方式。
首先我们需要打开浏览器的开发者工具或这直接按F12,之后我们就可以看到前端的代码(定位的根本)。
现在我们要定位到输入框,前端代码已经用黑色框标记出来。
<input type=“text” class=“s_ipt” name=“wd” id=“kw” maxlength=“100” autocomplete=“off”>
这里面我们可以看到有个id标签,且id=‘kw’。这个【kw】就是我们想要通过id的方式定位所需要的值。我们使用webdriver里面的方法【find_element_by_id】
selenium的写法如下:

from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
driver.find_element_by_id('kw')

这样我们就可以定位到这个输入框,定位到之后需要向输入框输入数据,我们只需要跟在后面加上一个方法【send_keys()】就可以了。括号内要传入你要输入的值作为参数。

driver.find_element_by_id('kw').send_keys('selenium')

为什么要用send_keys?
我们打印一下find_element_by_id得到的是什么。
在这里插入图片描述
从打印中我们可以看出【find_element_by_id】返回的是一个【WebElement】类型,也就是说通过这个方法我们是定位到元素,但是并没有对元素进行任何的操作,后面的send_keys才是真正的驱使浏览器对元素进行操作,**后面很多操作我们都是先定位元素再对元素进行操作。所以我们学习selenium的两大步就是【定位元素】以及【操作元素】。

通过name定位

<input type=“text” class=“s_ipt” name=“wd” id=“kw” maxlength=“100” autocomplete=“off”>
看回这个input标签,我们发现除了id这个属性之外还有一个name的属性,我们定位一个元素可以用多种方法,name也是其中一种。直接上代码!

from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
driver.find_element_by_name('wd')

实现个小动作,在百度搜索【selenium】

分析:
实现这个小动作需要两步
1、输入框输入【selenium】
2、点击【百度一下】按钮

我们使用id跟那么两种方法实现,另外介绍一个元素的操作方法**【click()】**,中文意思就是点击,括号内不用放参数。

from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
driver.find_element_by_name('wd').send_keys('selenium')
driver.find_element_by_id('su').click()

在这里插入图片描述
为什么【百度一下】的id是【su】,这个就自己找一找哈。顺便吐槽一句,百度的广告真多。。。

最后介绍一下怎么记住定位的方法,之前有人跟我吐槽说方法名字长不好记,其实很简单。
find_element_by_id
查找_元素_通过_id
完事!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值