python自动化之selenium

一、环境

1、selenium

安装:pip install selenium==版本号(==后可省略,默认安装最新版本)

查看:pip show selenium

卸载:pip  uninstall selenium             

2、浏览器驱动

以chrome为例:

驱动下载地址(需墙):https://sites.google.com/a/chromium.org/chromedriver/home

http://chromedriver.storage.googleapis.com/index.html(国内可访问)

Windows:解压后将驱动移动至chrome安装目录下和python安装目录下

Mac:解压后直接移动至/usr/local/bin目录下

修改权限:sudo chmod u+x,o+x  /usr/local/bin/chromedriver

检查是否成功:chromedriver --version

3、测试代码

成功打开chrome跳转至百度并关闭浏览器则表示环境安装成功

import time
from selenium import webdriver

# 创建浏览器驱动
driver = webdriver.Chrome()

# 打开web页面
driver.get(r"https://www.baidu.com")

time.sleep(1)

# 关闭驱动
driver.quit()

二、元素定位(chrome可通过F12定位,Firefox可通过firebug定位)

1、id(通过元素的id属性定位,id一般情况下在当前页面中是唯一)

例:driver.find_element_by_id(id)

2、name(通过元素的name属性定位)

例:drivr.find_element_by_name(name)

3、class_name(通过元素的class属性定位)

例:driver.find_element_by_class_name(class)

4、tag_name(通过元素的标签名称定位)

例:driver.find_element_by_tag_name("标签名")

注:如果页面中存在多个相同标签,默认返回第一个标签元素。

5、link_text(定位超链接标签)

例:driver.find_element_by_link_text("超链接中的全部文本")

注:link_text定位元素的内容必须为全部匹配

6、partial_link_text(定位超链接标签)

例:driver.find_element_by_partial_link_text("超链接中的部分文字或者全部文字")

注:可以使用精准或模糊匹配,如果有多个值,默认返回第一个值

7、xpath(基于元素路径定位)

driver.find_element_by_xpath()

绝对路径:以单斜杠开头逐级开始编写,不能跳级。如:/html/body/div/p1/input

相对路径:以双斜杠开头,双斜杠后边跟元素名称,不知元素名称可以使用*代替。如://input或者//*

路径结合属性:在Xpath中,所有的属性必须使用@符号修饰.如://*[@id='id值']

路径结合逻辑://*[@id="id值" and @属性='属性值']

路径结合层级://*[@id='父级id属性值']/input

定位文本值等于XXX的元素://*[text()='XXX']

定位属性包含xxx的元素://*[contains(@属性,'xxx')]

定位属性以xxx开头的元素://*[starts-with(@属性,'xxx')]

8、css定位(通过css选择器工具进行定位)

driver.find_element_by_css_selector()

id选择器                  #id  

class选择器            .class

元素选择器             element   如:input

属性选择器             [属性名=属性值]

层级选择器              p>input 或者 p input  注:>与空格的区别,大于号必须为子元素,空格则不用

9、定位一组元素

driver.find_elements_by_xxx()

注:返回类型为列表

10、元素定位方法底层都是通过driver.find_element(By.xxx, 'value')实现

注:使用By类必须导包from selenium.webdriver.common.by import By

 

 

 

おすすめ

転載: blog.csdn.net/weixin_44079370/article/details/108219480