selenium快速使用
安装
1、webdriver
2、pip install selenium
3、浏览器
行业标准
支持多浏览器
支持多语言
远程支持
# 使用 selenium
from selenium import webdriver
# 得到一个浏览器对象
browser = webdriver.Chrome()
# 打开一个网页
url = 'http://www.douban.com'
browser.get(url)
print(browser.title)
print(browser.current_url)
print(browser.page_source)
#
# # 刷新页面
# browser.refresh()
#
# # 访问一个另外的网址
# browser.get('http://www.baidu.com')
#
# # back
# browser.back() # 豆瓣
#
# # 前进
# browser.forward() # 百度
#
# # 最小化
# browser.minimize_window()
#
# # 最大化
# browser.maximize_window()
#
# # # 全屏
# # browser.fullscreen_window()
#
# # 固定尺寸, px
# browser.set_window_size(400, 300)
#
# # 关闭标签页
# browser.close()
# 关闭浏览器
browser.quit()
=================================================================
自动化测试:
1、打开浏览器
2、输入网址
3、点点点。(先找到输入、点击的元素在哪儿) ==》 元素定位
4、断言(测试是不是到了预期页面。)assert
5、输出测试报告
import pytest
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
def test_01():
dirver = webdriver.Chrome()
url = "http://www.baidu.com"
dirver.get(url)
input_driver = dirver.find_element(By.XPATH,'//input[@id="kw"]')
time.sleep(2)
dirver.maximize_window()
time.sleep(2)
input_driver.send_keys("十七岁的那些年")
time.sleep(2)
# assert dirver.title == "百度一下,你就知道"
# 关闭浏览器
dirver.quit()
# pytest.main(["-s","-v","--html=obj_html.html"])
=========================================================================
xpath语法:
表达式 | 描述 |
---|---|
nodename | 选取此节点的所有子节点 |
一个斜杠:/ | 从根节点选取。绝对路径 |
两个斜杠:// | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。相对路径 |
一个点:. | 选取当前节点 |
两个点:. . | 选取当前节点的父级节点。 |
@ | 选取属性。 |
and | |
text() | |
contains() | |
索引 |
=============================================================================
xpath 用法:
1、//input[@name=“”]
2、and 组合属性
3、//div/input 单斜杠通过父亲找儿子
4、//div//input 通过祖先找子孙
5、… 儿子找父亲
6、//a[text()=“豆瓣读书”] ,通过文本
- text() 不用 @,因为他不是属性7、text() 经常和 contains 组合使用。 //a[contains(text(), ‘豆瓣读书’)]
//a[contains(@class, ‘anony’)]8、索引有两个注意事项:1、加括号,2、索引从 1 开始
9、following-sibling, preceding-sibling, ancestor
a//ancestor::div[@id=“anony-nav”] 表示a元素的祖先div 元素10、*
轴:你想通过一个元素找到另一个元素
称呼:关系://*[@class=“account-form-3rd-hd”]//following-sibling::div
xpath的使用
表达式 | 描述 |
---|---|
//input[@name=“q”] | 抽象后的语法://标签名[@属性名=“属性值”] |
//input[@name=“q” and @type=“text” and @size=“12”] | 多元素组合条件定位查找: |
//div[@class=“van-tab van-tab–active”]//div[@class=“flex-align”] | 通过父级元素定位,查找子级元素:(子孙代) |
//div[@class=“flex-align”]//… | 通过子元素查找父级元素 |
//div[@class=“flex-align”]/…/div | 通过子元素查找同级元素,先查找父级元素再查找同级元素 |
//span[contains(text(), “十七”)] | 通过文本查找元素;(- text() 不用 @,因为他不是属性) |
(//span[contains(text(), “十七”)])[1] | 索引有两个注意事项:1、加括号,2、索引从 1 开始 |
(//*[@class=“flex-align”])[4] | 通过*查询任意的元素 |
(//span[contains(text(), “十七”)])//ancestor::div[@id=“app”] 轴查询:following-sibling, preceding-sibling, ancestor following-sibling 选取文档中当前节点的结束标签之后的所有节点。 ancestor 选取当前节点的所有先辈(父、祖父等) preceding-sibling 选取当前节点之前的所有同级节点。哥哥或姐姐