香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

Python2 Selenium元素定位的实现(8种)


时间:2022-04-02 10:20 作者:admin610456


当我们想让 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 webdriverdriver = 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.通过 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()

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,它也是比较难掌握的一种方式。关于xpath和css定位方式的详细介绍,可以

参考

selenium 元素定位。

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

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)