Python2+Selenium入门03-元素定位

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

内容简介:当我们想让 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 元素定位


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

查看所有标签

猜你喜欢:

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

JavaScript RIA开发实战

JavaScript RIA开发实战

(英)Dennis Odell / 张立浩 / 清华大学出版社 / 2010 / 48.00元

本书介绍如何采用最合理的方式为RIA编写可靠的、易于维护的HTML、CSS和JavaScript代码,以及如何使用Ajax技术在后台实现浏览器与Web服务器的动态通信。本书将介绍您在构建Web应用程序时可能遇到的性能限制,以及如何以最佳的方式克服这些限制。此外,本书提供的提示可以使用户界面响应更加灵敏。 本书也将介绍如何通过添加使用自定义字体的印刷标题、多媒体回放组件、自定义窗体控件和动态绘......一起来看看 《JavaScript RIA开发实战》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试