selenium+python之元素定位

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

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

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

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)

执行截图如下:
selenium+python之元素定位_第3张图片
第三步:使用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’
selenium+python之元素定位_第4张图片
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’
selenium+python之元素定位_第5张图片
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)看到百度网页上任意链接,如左上角的“新闻”链接,它的链接名称就是“新闻”
selenium+python之元素定位_第6张图片
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)

selenium+python之元素定位_第7张图片
*

第八步:使用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’

2)在HTML代码中按ctrl+F,在搜索框中搜索area,可以看到,所有HTML里只有1个area,因此使用find_element_tag_name的方法必然能唯一定位到这个元素
selenium+python之元素定位_第8张图片
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)

selenium+python之元素定位_第9张图片

你可能感兴趣的:(笔记,selenium,python)