# coding=gbk
from selenium import webdriver
import time
# opt = webdriver.ChromeOptions()
driver = webdriver.Firefox()
driver.get('https://www.baidu.com')
time.sleep(2)
# 1.1元素定位
# 1.1.1 id定位 id在html文档中是唯一的
# 通过id定位百度输入框 diver.find_element_by_id('kw').send_keys("小米")
# 通过id定位百度搜索按钮 diver.find_element_by_id('su').click()
# 1.1.2 name定位 name用来指定元素名称 像人名
# 通过name定位百度输入框 driver.find_element_by_name("wd")
# 1.1.3 class定位 class用来指定元素的类名 通过class定位百度输入框的用法
driver.find_element_by_class_name("s_ipt")
# 1.1.4 tag定位 html通过tag来定义不同页面的元素
# 例如:<input>一般用来定义输入框 <a>用来定义超链接
# 因为一个标签往往用来定义一类功能 所以通过标签识别单个元素的概率特别低
driver.find_element_by_tag_name("input")
# 1.1.5 link定位 专门用来定义文本链接
# <a href="http://news.baidu.com" target="_blank" class="mnav c-font-normal c-color-t">新闻</a>
driver.find_element_by_link_text("新闻")
# driver.find_element_by_link_text("新闻").click()
# 1.1.6 partial link定位 对link定位的补充 有些文字链接比较长 可取文字链接部分文字进行定位
driver.find_element_by_partial_link_text("闻")
# 1.1.7 XPath定位 在XML文档中 XPath是一种定位元素的语言 html可看作XML的一种实现
# 1.绝对路径定位 用标签名的层级 关系来定位元素的绝对路径
# 如果一个层级下有有多个相同的标签名 按上下顺序确定是第几个 如:div[2]
# 定位百度输入框
# driver.find_element_by_xpath("/html/body/div/div[2]/div[5]/div/div/form/span/input")
# 2.利用元素属性定位
# //input表示当前页面某个input标签,[@id='kw']表示这个元素的id值是kw
driver.find_element_by_xpath("//input[@id='kw']")
# 如果不想指定某个标签 可用*代替 元素的任意属性都可以使用(id/name/class/type/)
driver.find_element_by_xpath("//*[@name='wd']")
# 3.层级与属性结合 如果一个元素本身没有可以唯一标识这个元素的属性值 可以查找上一级元素
# 若上一级元素有可以唯一标识属性的值 那就可以使用
driver.find_element_by_xpath("//a[@class='hot-refresh c-font-normal c-color-gray2']/span")
# time.sleep(5)
driver.find_element_by_xpath("//form[@id='form']/span/input")
driver.find_element_by_xpath("//form[@id='form']/span[2]/input")
# 4.使用逻辑运算符 如果一个属性不能唯一的区分一个元素 可以使用逻辑运算符连接多个属性来查找元素
driver.find_element_by_xpath("//input[@id='kw' and @class='s_ipt']") # and表示必须要满足两个条件
# 5.使用contains方法 用于匹配一个属性中包含的字符串
driver.find_element_by_xpath("//span[contains(@class,'s_ipt_wr')]/input")
# 6.使用text()方法 用于匹配显示文本信息
driver.find_element_by_xpath("//a[text()='新闻']")
# 实现partial link定位效果
driver.find_element_by_xpath("//a[contains(text(),'新')]")
time.sleep(5)
#
# 1.2 控制浏览器
# 1.2.1 控制浏览器窗口大小
# driver.set_window_size(800, 800)
driver.get('http://news.baidu.com')
# 1.2.2 控制浏览器前进后退
# 后退
driver.back()
time.sleep(3)
# 前进
driver.forward()
time.sleep(3)
# 1.2.3 浏览器刷新
driver.refresh()
driver.back()
#
# 1.3 webdriver中常用方法
# (1) clear():清除文本
# (2) send_key(value):模拟键盘输入
# (3) click():单击元素
driver.find_element_by_id("kw").send_keys("selenium")
time.sleep(5)
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys("自动化测试")
driver.find_element_by_id("su").click()
# (4) submit():提交表单
# 有些搜索框不提供搜索按钮 是通过回车键完成搜索内容的提交 这时可通过submit()模拟
time.sleep(3)
search_text = driver.find_element_by_id("kw")
time.sleep(3)
driver.find_element_by_id("kw").clear()
search_text.send_keys("selenium")
search_text.submit()
# submit()的应用远不及click()广泛 click可以单击任何可点击的元素
# (5) size:返回元素的尺寸
#
Selenium 3 自动化测试 WebDriver API
于 2022-02-10 15:44:33 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)