selenium+python之元素定位

本文目标:使用8种方法定位百度首页上的页面元素并进行操作。

环境基础:selenium+python基础环境已配置,能够使用selenium打开百度首页。

第一步:手动打开百度首页,然后按F12,查看首页的HTML代码
在这里插入图片描述
第二步:使用find_element_by_id()来定位元素。
1)按下ctrl+shift+c键,然后光标选中要点击搜索框。可以看到右边的HTML栏里高亮的部分就是这个标签的代码:。由此代码可知,搜索框的id=kw.
在这里插入图片描述

2)在python中写入代码,让selenium在搜索框中输入“python”

from selenium.webdriver import Chrome
from time import sleep
with Chrome() as driver:
    '''使用上下文管理器来操作driver能够更合理的使用计算机资源,比driver = Chrome()的写法更好'''

    # 访问百度网站,然后等待2秒
    driver.get('http://www.baidu.com')
    sleep(2)
    # 选中搜索输入框并输入’python,然后等待5秒
    driver.find_element_by_id('kw').send_keys('python')
    sleep(5)

执行截图如下:
在这里插入图片描述
第三步:使用find_element_by_name()的方法定位元素
在第二步中,可知搜索框的name=wd,将代码重写,使用find_element_by_name的方法在输入框中输入‘python’

from selenium.webdriver import Chrome
from time import sleep
with Chrome() as driver:
    '''使用上下文管理器来操作driver能够更合理的使用计算机资源,比driver = Chrome()的写法更好'''

    # 访问百度网站,然后等待2秒
    driver.get('http://www.baidu.com')
    sleep(2)
    # 选中搜索输入框并输入’python,然后等待5秒
    driver.find_element_by_name('wd').send_keys('python')
    sleep(5)

第四步:使用find_element_by_class_name()的方法定位元素
在第二步中,可知搜索框的class_name=s_ipt。将代码重写,使用find_element_by_class_name的方法在输入框中输入‘python’

from selenium.webdriver import Chrome
from time import sleep
with Chrome() as driver:
    '''使用上下文管理器来操作driver能够更合理的使用计算机资源,比driver = Chrome()的写法更好'''

    # 访问百度网站,然后等待2秒
    driver.get('http://www.baidu.com')
    sleep(2)
    # 选中搜索输入框并输入’python,然后等待5秒
    driver.find_element_by_class_name('s_ipt').send_keys('python')
    sleep(5)

第五步:使用find_element_by_xpath()的方法定位元素
1)在搜索框的代码处点击右键,然后选‘copy’,然后在子菜单里选择‘copy xpath’
在这里插入图片描述
2)重写python代码,使用find_element_by_xpath()方法在输入框中输入‘python’

from selenium.webdriver import Chrome
from time import sleep
with Chrome() as driver:
    '''使用上下文管理器来操作driver能够更合理的使用计算机资源,比driver = Chrome()的写法更好'''

    # 访问百度网站,然后等待2秒
    driver.get('http://www.baidu.com')
    sleep(2)
    # 选中搜索输入框并输入’python,然后等待5秒
    driver.find_element_by_xpath('//*[@id="kw"]').send_keys('python')
    sleep(5)

第六步:使用find_element_by_css_selector()方法定位元素
1)在搜索框的代码处点击右键,然后选‘copy’,然后在子菜单里选择‘copy selector’
在这里插入图片描述
2)重写python代码,使用find_element_by_css_selector()方法在搜索框中输入‘python’

from selenium.webdriver import Chrome
from time import sleep
with Chrome() as driver:
    '''使用上下文管理器来操作driver能够更合理的使用计算机资源,比driver = Chrome()的写法更好'''

    # 访问百度网站,然后等待2秒
    driver.get('http://www.baidu.com')
    sleep(2)
    # 选中搜索输入框并输入’python,然后等待5秒
    driver.find_element_by_css_selector('#kw').send_keys('python')
    sleep(5)

第七步:使用find_element_by_link_text()方法定位元素
该方法仅用于属性为link的元素,即它是一个链接,直接通过链接名称来定位元素
1)看到百度网页上任意链接,如左上角的“新闻”链接,它的链接名称就是“新闻”
在这里插入图片描述
2)修改python代码,使用find_element_by_link_text()方法来点击“新闻”链接

from selenium.webdriver import Chrome
from time import sleep
with Chrome() as driver:
    '''使用上下文管理器来操作driver能够更合理的使用计算机资源,比driver = Chrome()的写法更好'''

    # 访问百度网站,然后等待2秒
    driver.get('http://www.baidu.com')
    sleep(2)
    # 点击新闻链接,然后等待5秒
    driver.find_element_by_link_text('新闻').click()
    sleep(5)

在这里插入图片描述
*

第八步:使用find_element_by_partial_link_text()方法定位元素
基本同第七步,不过这次不写“新闻”链接的全部名称,只写一个“新”字

from selenium.webdriver import Chrome
from time import sleep
with Chrome() as driver:
    '''使用上下文管理器来操作driver能够更合理的使用计算机资源,比driver = Chrome()的写法更好'''

    # 访问百度网站,然后等待2秒
    driver.get('http://www.baidu.com')
    sleep(2)
    # 点击新闻链接,然后等待5秒
    driver.find_element_by_partial_link_text('新').click()
    sleep(5)

第九步:使用find_element_by_tag_name()方法来定位元素*
1)按住ctrl+shift+c,光标选中百度首页中的百度logo,查看其HTML代码:<area style=“outline:none;” …(略)
可知,其标签为‘area’

2)在HTML代码中按ctrl+F,在搜索框中搜索area,可以看到,所有HTML里只有1个area,因此使用find_element_tag_name的方法必然能唯一定位到这个元素
在这里插入图片描述
3)修改python代码,定位图中的logo,并且点击

from selenium.webdriver import Chrome
from time import sleep
with Chrome() as driver:
    '''使用上下文管理器来操作driver能够更合理的使用计算机资源,比driver = Chrome()的写法更好'''

    # 访问百度网站,然后等待2秒
    driver.get('http://www.baidu.com')
    sleep(2)
    # 选中搜索输入框并输入’python,然后等待5秒
    driver.find_element_by_tag_name('area').click()
    sleep(5)

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值