微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python之Selenium 八种元素定位方法

元素定位

webdriver提供了一系列的元素定位方法

元素webdriver中的方法
idfind_element_by_id()
namefind_element_by_name()
class namefind_element_by_class_name()
tag namefind_element_by_tag_name()
link textfind_element_by_link_text()
partial link textfind_element_by_partial_link_text()
xpathfind_element_by_xpath()
css selectorfind_element_by_css_selector()

 

id元素定位(根据标签的id定位)

示例:百度搜索

F12查找到页面元素为以下HTML代码,查找id="kw"的元素

 

#coding:utf-8

from selenium import webdriver

import time


# 百度搜索selenium

driver = webdriver.Chrome()

driver.get("https://www.baidu.com/")

driver.maximize_window()

driver.find_element_by_id("kw").send_keys("selenium") # id 定位输入框元素

driver.find_element_by_id("su").click() # id 定位"百度一下"元素

time.sleep(3)

driver.quit()

  1.  

name元素定位(根据标签的name定位)

示例:百度搜索

F12查找到页面元素,name="wd"

from selenium import webdriver

import time


# 百度搜索

driver = webdriver.Chrome()

driver.get("https://www.baidu.com/")

driver.maximize_window()

driver.find_element_by_name("wd").send_keys("selenium") # name 定位输入框元素

driver.find_element_by_id("su").click() # id 定位"百度一下"元素

time.sleep(3)

driver.quit()

  1.  

xpath元素定位

示例:百度搜索

一般的正常copy-xpath就可以了,但是copy不能保证百分百准确,我们也可以手写xpath,写好可以在下方搜索一下

from selenium import webdriver

import time


# 百度搜索

driver = webdriver.Chrome()

driver.get("https://www.baidu.com/")

driver.maximize_window()

driver.find_element_by_xpath("//form/span/input[@id='kw']").send_keys("selenium") # xpath 定位输入框元素

driver.find_element_by_xpath("//form/span/input[@id='su']").click() # xpath 定位"百度一下"元素

time.sleep(3)

driver.quit()

 

 

class name 定位

示例:百度搜索框(按class属性的值来定位用class_name)

一般class_name会定位到多个是要注意的点

 

 

 

link text定位

link text用来定位文本链接,如通过在百度首页点击'新闻'、'地图'等都可以进入到对应的页面,因此可以用link进行定位:

示例:百度首页“新闻”链接

 

 
from selenium import webdriver

import time


# 点击百度首页“新闻”标签

driver = webdriver.Chrome()

driver.get("https://www.baidu.com/")

driver.maximize_window()

driver.find_element_by_link_text("新闻").click()

time.sleep(3)

driver.quit()

partial link text定位

partial link text定位方式为link text的一个补充,当文件链接过长时,部分匹配定位

如以下链接过长定位时只需要截取一部分即可

<a href="http://news.baidu.com" name="tj_trnews" class="mnav">这是全世界全球最关注的新闻</a>

driver.find_element_by_partial_link_text("关注的新闻").click()

 

css selector定位(不太常用)

css Selector定位实际就是HTML的css选择器的标签定位

用css定位就不需要从最上面一层开始定位了,可以从当前层最近的容易定位的元素(class或者id)开始。

 

示例:百度搜索框(百度一下这个按钮)

 

id和class原理一样,#id和.class


#coding:utf-8

from selenium import webdriver

import time


# css Selecto选择器定位

# id选择器:#id;

driver = webdriver.Chrome()

driver.get("https://www.baidu.com/")

driver.maximize_window()

driver.find_element_by_css_selector("#kw").send_keys("selenium")

driver.find_element_by_css_selector("#su").click()

time.sleep(3)

driver.quit()



# class选择器:.class

driver = webdriver.Chrome()

driver.get("https://www.baidu.com/")

driver.maximize_window()

driver.find_element_by_css_selector(".s_ipt").send_keys("selenium")

driver.find_element_by_css_selector(".btn self-btn bg s_btn").click()

time.sleep(3)

driver.quit()

tag name定位(很不常用,不好定位)

当要定位一组元素相同元素时,可以考虑用tagName或name。

 

总结

页面元素有id属性时,最好尽量用id来定位。

当要定位一组元素相同元素时,可以考虑用tagName或name。

当有链接需要定位时,可以考虑linkText或partialLinkText方式。

xpath定位用的较多,可以直接复制也可以自己写

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐