Python2+Selenium入门03-元素定位

当咱们想让 Selenium 自动地操做浏览器时,就必须告诉 Selenium 如何去定位某个元素或一组元素,每一个元素都有着不一样的标签名和属性值,Selenium 提供了如下8种定位元素的方式,每种方式对应了2个方法:
find_element_by_( ),是用来定位单个元素的,find_elements_by_( ),是用来定位多个元素的。css

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

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

1.经过 id 定位

find_element_by_id(id)
find_elements_by_id(id)web

# _*_ 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)segmentfault

# _*_ 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)ui

# _*_ 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)url

# _*_ 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.经过 partial link 定位

find_element_by_partial_link_text(link_text)
find_elements_by_partial_link_text(link_text)code

# _*_ 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)ip

# _*_ 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)utf-8

# _*_ 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 元素定位

相关文章
相关标签/搜索