博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python2+Selenium入门03-元素定位
阅读量:7041 次
发布时间:2019-06-28

本文共 3079 字,大约阅读时间需要 10 分钟。

当我们想让 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_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()

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

转载地址:http://svhal.baihongyu.com/

你可能感兴趣的文章
云端Linux成为两大挖矿黑客集团的战场
查看>>
JavaScript之内存机制
查看>>
SRX 硬件相关
查看>>
vue-cli搭建之[环境变量][path]真解
查看>>
弄懂Android 源码中那些巧妙位运算
查看>>
SQLServer之锁简介
查看>>
个性化推荐哪个好,个性化推荐平台怎么样?
查看>>
微信小程序实现两边小中间大的轮播效果的示例代码
查看>>
webpack 模块热更新 Hot Module Replacement
查看>>
Linux 内核、Shell 简述
查看>>
人脸实时签到(three.js+tracking.js)基于浏览器
查看>>
JavaScript正则表达式
查看>>
面试题 LazyMan 的 Rxjs 实现方式
查看>>
Android Webview打开网页空白
查看>>
记一次tortoisegit access denied错误
查看>>
前端使用 gulp 解决多项目缓存问题
查看>>
Bootstrap基础学习笔记(仅个人学习使用)
查看>>
Android项目实战之高仿网易云音乐项目介绍
查看>>
头条面试题
查看>>
Vue实现一个图片懒加载插件
查看>>