扣丁学堂Python培训之Selenium元素定位的八种实现方式

2019-02-25 19:27:57 972浏览

今天扣丁学堂Python培训老师给大家介绍一下关于Python2Selenium元素定位实现(8种)的详细介绍,首先当我们想让Selenium自动地操作浏览器时,就必须告诉Selenium如何去定位某个元素或一组元素,每个元素都有着不同的标签名和属性值,Selenium提供了以下8种定位元素的方式,每种方式对应了2个方法:



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

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

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

1.通过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()

2.通过通过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()

3.通过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()

4.通过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()

5.通过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()

6.通过partiallink定位

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()

7.通过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()

8.通过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()

通用的终极定位语法

上面的所有元素定位find_element_by_xxx和find_elements_by_xxx调用的结果,实际上都是在调用以下两种方法,我们也可以直接调用一下两种方法即可。

find_element(self,by=By.ID,value=None):

find_elements(self,by=By.ID,value=None):

class By(object):
  """
  Set of supported locator strategies.
  """
 
  ID = "id"
  XPATH = "xpath"
  LINK_TEXT = "link text"
  PARTIAL_LINK_TEXT = "partial link text"
  NAME = "name"
  TAG_NAME = "tag name"
  CLASS_NAME = "class name"
  CSS_SELECTOR = "css selector"

例如:

from selenium.webdriver.common.by import By
# 根据id,定位id为“world”的元素
world = driver.find_element(By.ID,"world")
print(world.text)
# xpath定位,相对路径与属性结合 定位密码输入框
password = driver.find_element(By.XPATH,"//input[@name='password']")
print(password.get_attribute("value"))
# css选择器,标签+属性 定位用户名输入框
username = driver.find_element(By.CSS_SELECTOR,"input[name='username']")
print(username.get_attribute("value"))

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

以上就是关于扣丁学堂Python培训之Selenium元素定位的八种实现方式的全部内容,希望对大家的学习有所帮助,最后想要学好Python开发小编给大家推荐口碑良好的扣丁学堂,扣丁学堂有专业老师制定的Python学习路线图辅助学员学习,此外还有与时俱进的Python视频教程供大家学习,想要学好Python开发技术的小伙伴快快行动吧。扣丁学堂Python技术交流群:279521237。

扣丁学堂微信公众号 


关注微信公众号获取更多学习资料 

 

查看更多关于"Python开发资讯"的相关文章>

标签: Python培训 Python视频教程 Python在线视频 Python学习视频 Python培训班

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号