大型情感剧集Selenium:3_元素定位 #华为云·寻找黑马程序员#
关于昨天的文章
今天有朋友反馈,代码运行的时候,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才复现了此问题。虽然这个告警不影响使用,但既然官方提示了修改就看看呗,其实很简单:
[code]# 将原本的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一样进行切片,筛选等操作。
我们以百度为例,介绍以上方法:
下来我们用代码针对百度进行演示
[code]# -*- 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:4_老中医教你(单/多/下拉框)选项定位 #华为云·寻找黑马程序员#
- 大型情感剧集Selenium:2_options设置 #华为云·寻找黑马程序员#
- 大型情感剧集Selenium:8_selenium网页截图的四种方法
- Selenium寻找元素定位 id findElement(by.id(“id”)) name findElement(by.name(“name”)) class_name findE
- selenium 元素可以定位到,但是无法点击问题
- Selenium Webdriver元素定位的八种常用方式
- Selenium2学习-002-Selenium2 Web 元素定位及 XPath 编写演示示例
- selenium自学_元素基本定位方法
- [Selenium]中使用css选择器进行元素定位
- selenium webdriver 学习总结-元素定位
- Selenium Webdriver元素定位的常用方式
- CssSelector之selenium元素定位
- selenium的元素定位
- 1.8、Selenium2+python八种元素元素定位(Firebug和firepath)
- Selenium python 页面元素定位方法
- 在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素。其中By类的常用定位方式共八种,现分别介绍如下
- selenium元素定位不到--可能是iframe捣的乱
- Selenium2(webdirver)入门之三元素定位(Java版)
- Selenium Webdriver元素定位的八种常用方式
- 20170922学习笔记Selenium 2第四章WebDriver API 4.1定位元素