Python2+Selenium入门03-元素定位

栏目: Python · 发布时间: 7年前

内容简介:当我们想让 Selenium 自动地操作浏览器时,就必须告诉 Selenium 如何去定位某个元素或一组元素,每个元素都有着不同的标签名和属性值,Selenium 提供了以下8种定位元素的方式,每种方式对应了2个方法:find_element_by_( ),是用来定位单个元素的,下面以百度首页为例进行举例说明:

元素定位

当我们想让 Selenium 自动地操作浏览器时,就必须告诉 Selenium 如何去定位某个元素或一组元素,每个元素都有着不同的标签名和属性值,Selenium 提供了以下8种定位元素的方式,每种方式对应了2个方法:

find_element_by_( ),是用来定位单个元素的, find_elements_by_ ( ),是用来定位多个元素的。

  • 通过 id 定位
  • 通过 name 定位
  • 通过 class 定位
  • 通过 tag 定位
  • 通过 link 定位
  • 通过 partial link 定位
  • 通过 xpath 定位
  • 通过 css 选择器定位

下面以百度首页为例进行举例说明:

(一)通过 id 定位

find_element_by_id(id)

find_elements_by_id(id)

# _*_ coding:utf-8 _*_
from selenium import webdriver

driver = webdriver.Chrome()  
driver.maximize_window()     
driver.get("https://www.baidu.com/") 
# 定位id为“kw”的元素
input_text = driver.find_element_by_id("kw")
input_text.send_keys("selenium")

driver.quit()

(二)通过通过 name 定位

find_element_by_name(name)

find_elements_by_name(name)

# _*_ coding:utf-8 _*_
from selenium import webdriver
 
driver = webdriver.Chrome()  
driver.maximize_window()     
driver.get("https://www.baidu.com/") 
# 定位name为“wd”的元素
input_text = driver.find_element_by_name("wd")
input_text.send_keys("selenium")

driver.quit()

(三)通过 class 定位

find_element_by_class_name(name)

find_elements_by_class_name(name)

# _*_ coding:utf-8 _*_
from selenium import webdriver
 
driver = webdriver.Chrome()  
driver.maximize_window()     
driver.get("https://www.baidu.com/") 
# 定位class名称为“s_ipt”的元素
input_text = driver.find_element_by_class_name("s_ipt")
input_text.send_keys("selenium")

driver.quit()

(四)通过 tag 定位

find_element_by_tag_name(name)

find_elements_by_tag_name(name)

# _*_ coding:utf-8 _*_
from selenium import webdriver
 
driver = webdriver.Chrome()  
driver.maximize_window()     
driver.get("https://www.baidu.com/") 
# 定位标签为<input>的元素
input_text = driver.find_elements_by_tag_name("input")
print(len(input_text))

driver.quit()

(五)通过 link 定位

find_element_by_link_text(link_text)

find_elements_by_link_text(link_text)

# _*_ coding:utf-8 _*_
from selenium import webdriver
 
driver = webdriver.Chrome()  
driver.maximize_window()     
driver.get("https://www.baidu.com/") 
# 定位链接文本完全匹配“我新闻”的元素
news = driver.find_element_by_link_text("新闻")
news.click()

driver.quit()

(六)通过 partial link 定位

find_element_by_partial_link_text(link_text)

find_elements_by_partial_link_text(link_text)

# _*_ coding:utf-8 _*_
from selenium import webdriver
 
driver = webdriver.Chrome()  
driver.maximize_window()     
driver.get("https://www.baidu.com/") 
# 定位链接文本部分匹配“新”的元素
news = driver.find_element_by_partial_link_text("新")
news.click()

driver.quit()

(七)通过 xpath 定位

find_element_by_xpath(xpath)

find_elements_by_xpath(xpath)

# _*_ coding:utf-8 _*_
from selenium import webdriver
 
driver = webdriver.Chrome()  
driver.maximize_window()     
driver.get("https://www.baidu.com/") 
# xpath定位,相对路径与属性结合定位搜索框
news = driver.find_element_by_xpath("//input[@id='kw']")
news.click()

driver.quit()

(八)通过 css 选择器定位

find_element_by_css_selector(css_selector)

find_elements_by_css_selector(css_selector)

# _*_ coding:utf-8 _*_
from selenium import webdriver
 
driver = webdriver.Chrome()  
driver.maximize_window()     
driver.get("https://www.baidu.com/") 
# css选择器,id定位密码输入框
news = driver.find_element_by_css_selector('#kw')
news.click()

driver.quit()

这里只是简单介绍了8种元素定位方式的使用,比较简单易用的是通过id、name、class定位,我个人比较喜欢的是用xpath定位,当然,最灵活也是最强大的定位方式就是css,它也是比较难掌握的一种方式。关于xpath和css定位方式的详细介绍,可以参考

selenium 元素定位 。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

从零开始学微信公众号运营推广

从零开始学微信公众号运营推广

叶龙 / 清华大学出版社 / 2017-6-1 / 39.80

本书是丛书的第2本,具体内容如下。 第1章 运营者入门——选择、注册和认证 第2章 变现和赚钱——如何从0到100万 第3章 决定打开率——标题的取名和优化 第4章 决定美观度——图片的选取和优化 第5章 决定停留率——正文的编辑和优化 第6章 决定欣赏率——版式的编辑和优化 第7章 数据的分析——用户内容的精准营销 书中从微信运营入门开始,以商业变......一起来看看 《从零开始学微信公众号运营推广》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

html转js在线工具
html转js在线工具

html转js在线工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具