关于昨天的文章

今天有朋友反馈,代码运行的时候,selenium提示警告

DeprecationWarning: use options instead of chrome_options

driver = webdriver.Chrome(chrome_options=options)

本来以为是我的selenium版本太低了,可以上官网看到3.141.0是最新版本啊,最后把python从3.6.8升级到3.7.3才复现了此问题。虽然这个告警不影响使用,但既然官方提示了修改就看看呗,其实很简单:

# 将原本的chrome_options
driver = webdriver.Chrome(chrome_options=options)
# 改为options 即可
driver = webdriver.Chrome(options=options)
# 另外,针对以下引用
from selenium.webdriver.chrome.options import Options
options = Options()
# 可以简写为:
options = webdriver.ChromeOptions()

今天说什么

今天肯定说元素定位啊,再不说都要取关了…可应该怎么说呢?

话说,selenium1.0起初它使用了基于Javascript的自动化引擎,而浏览器对 Javascript 又有很多安全限制,之后后通过webdrvier进行了各浏览器的协议封装。那么说到底,我们通过selenium变相的完成了js的的相关操作,比如:

再来看看js的dom对象:

selenium将JavaScript的HTML DOM进行了封装处理,最终提供给我们进行使用。引申出三点:

开发转测试,真的是有优势的

作为一个合格的测试,抽时间学学html css 和js 也是对自己能力的提升

爬虫熟识的html解析库Beautifulsoup4,元素的定位上用法也类似以上两者,一通百通!

selenium元素定位

WebDriver提供了一系列的定位符以便使用元素定位方法。常见的定位符有以下几种:

  • id

  • class name

  • name

  • tag

  • link text

  • partial link text

  • xpath

  • css selector

而针对元素定位,selenium又分为find_element_by和find_elements_by。即找到一个元素和找到所有元素。

针对find_elements_by,我们又可以针对找到的元素,我们又可以像python操作list一样进行切片,筛选等操作。

我们以百度为例,介绍以上方法:

下来我们用代码针对百度进行演示

# -*- coding: utf-8 -*-
# @Author : 王翔
# @JianShu : 清风Python
# @Date : 2019/6/19 21:40
# @Software : PyCharm
# @version :Python 3.7.3
# @File : Day_3.1_chrome_option_warning.py
from selenium import webdriver
import time options = webdriver.ChromeOptions()
options.add_argument('window-size=800,600')
options.add_argument('disable-infobars')
driver = webdriver.Chrome(options=options) driver.get("http://www.baidu.com") # link_text 定位
driver.find_element_by_link_text('新闻').click()
time.sleep(1)
driver.back() # id 定位
driver.find_element_by_id("kw").send_keys("id 定位|")
time.sleep(1) # class name 定位
driver.find_element_by_class_name("s_ipt").send_keys("class name 定位|")
time.sleep(1) # name 定位
driver.find_element_by_name("wd").send_keys("name 定位|")
time.sleep(1) # css 定位
driver.find_element_by_css_selector("#kw").send_keys("css 定位|")
time.sleep(1) # xpath 定位
driver.find_element_by_xpath("//input[@id='kw']").send_keys(" xpath 定位|")
time.sleep(1) driver.quit()

效果如下:

To Be Continue

今天的内容就到这里,如果觉得有帮助,欢迎将文章或者我的公众号【清风Python】分享给更多喜欢python的人

来源:华为云社区征文 作者:清风Python

大型情感剧集Selenium:3_元素定位 #华为云·寻找黑马程序员#的更多相关文章

  1. 大型情感剧集Selenium:2_options设置 #华为云·寻找黑马程序员#

    上集回顾 昨天说简单介绍了什么是selenium,它能干what,和发展史与梗概.当的是python如何通过pip安装selenium,并下载对应浏览器的webdriver. 最后简单通过一个Demo ...

  2. 大型情感剧集Selenium:1_介绍 #华为云·寻找黑马程序员#

    学习selenium能做什么? 很多书籍.文章中是这么定义selenium的: Selenium 是开源的自动化测试工具,它主要是用于Web 应用程序的自动化测试,不只局限于此,同时支持所有基于web ...

  3. 大型情感剧集Selenium:4_老中医教你(单/多/下拉框)选项定位 #华为云·寻找黑马程序员#

    今天讲什么 讲什么标题说了,讲selenium的单选.多选.下拉框选项定位.但其实这东西,没什么太多说的,又比较枯燥,那该怎么让这一集selenium的课程变得有趣呢?有请老中医,哈哈- 怎么样,这个 ...

  4. 大型情感剧集Selenium:6_selenium中的免密登陆与cookie操作 #华为云·寻找黑马程序员#

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

  5. 大型情感剧集Selenium:9_selenium配合Pillow完成浏览器局部截图

    网页截图 上次提到了selenium的四种截图方法,最终截图了整张网页.但很多时候,我们仅仅需要截图部分的内容.比如截取某个关键信息,或者现在已经不常见的截图验证码(现在都是各种按规则点击-).那么我 ...

  6. 大型情感剧集Selenium:8_selenium网页截图的四种方法

    有时候,有时候,你会相信一切有尽头-当你的代码走到了尽头,那么保留最后一刻的状态尤为重要,此时你该如何操作?记录日志-没有将浏览器当前的状态进行截图来的直观! 那么,selenium截取截屏,有哪些方 ...

  7. 大型情感剧集Selenium:6_selenium中的免密登陆与cookie操作

    网站登录 现在各大平台在反爬虫功能上,可谓花样繁多.总结下来按照破解成功率排名,最高的是滑动解锁.其次是验证码数字.之后是一次点击对应的汉字,最后是想12306之前那种反人类的让你说那些是奶糖吧,哈哈 ...

  8. 大型情感剧集Selenium:6_selenium中的免密登陆与cookie操作【华为云技术分享】

    网站登录 现在各大平台在反爬虫功能上,可谓花样繁多.总结下来按照破解成功率排名,最高的是滑动解锁.其次是验证码数字.之后是一次点击对应的汉字,最后是想12306之前那种反人类的让你说那些是奶糖吧,哈哈 ...

  9. 【基础】selenium中元素定位的常用方法(三)

    一.Selenium中元素定位共有八种 id name className tagName linkText partialLinkText xpath cssSelector 其中前六种都比较简单, ...

随机推荐

  1. day 1 晚上 P2824 [HEOI2016/TJOI2016]排序 线段树

    #include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> #inclu ...

  2. 七月月赛T3

    题目背景 本题时空限制已经扩大 题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度.参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数 ...

  3. Consul安装集群搭建

    1 consul的安装和配置 1.1 consul agent 命令介绍 下载consul_1.0.0_linux_amd64.zip解压,里面只有一个consul可执行文件,其中,consul最常用 ...

  4. mysql双主互为主从配置

    在使用双主互为主从的模式前提是互为主从的两个数据库,表的主键必须是自增的. 环境不多说了 ,多台mysql单实例或单台多实例都可以.多实例的配置请参考:https://www.cnblogs.com/ ...

  5. Jenkins 与Docker/Kubernetes的自动化CI流水(笔记)

    一.CI/CD 持续集成(continuous Integration,CI):代码合并.构建.部署.测试都在一起.不断执行这个过程,并对结果反馈. 持续部署(Continuous Deploymen ...

  6. 暑假CV-QKD的相关论文单词集(第一弹)

    CV-QKD  连续变量-量子秘钥分发 Quadrature  正交 Photon     光子 Coherent    连续的,连贯的 Reconciliation   调解 Cryptograph ...

  7. linux 6.5操作系统建立

    VM上redhat enterprise linux6 ---> 使用仅主机模式网络连接 开始安装: ——>是否检查镜像:skip ——>选择语言: 中文/英文 ——>存储设备 ...

  8. Spring Boot 2.X(十八):集成 Spring Security-登录认证和权限控制

    前言 在企业项目开发中,对系统的安全和权限控制往往是必需的,常见的安全框架有 Spring Security.Apache Shiro 等.本文主要简单介绍一下 Spring Security,再通过 ...

  9. Oracle数据库 获取CLOB字段存储的xml格式字符串指定节点的值

    参照: Oracle存储过程中使用游标来批量解析CLOB字段里面的xml字符串 背景:在写存储过程时,需要获取表单提交的信息.表单信息是以xml格式的字符串存储在colb类型的字段dataxml中,如 ...

  10. 20191010-4 alpha week 1/2 Scrum立会报告+燃尽图 02

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/8747 一.小组情况 组长:迟俊文 组员:宋晓丽 梁梦瑶 韩昊 刘信鹏 队名 ...