selenium框架
Selenium is an umbrella project for a range of tools and libraries that enable and support the automation of web browsers.
It provides extensions to emulate user interaction with browsers, a distribution server for scaling browser allocation, and the infrastructure for implementations of the W3C WebDriver specification that lets you write interchangeable code for all major web browsers.
————选自官方文档
一个自动化测试的框架
webdriver
支持各大主流浏览器,下载相关驱动,并添加到环境变量中
启动浏览器
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
# 有界面启动
driver=webdriver.Firefox()
driver.get('https://www.baidu.com')
# 无界面启动
option=Options()
option.add_argument('--headless')
driver=webdriver.Firefox(firefox_options=option)
driver.get('https://www.baidu.com')
driver.page_source
查看源码
driver.get_cookie
和driver.get_cookies
获取服务器返回的cookie信息
执行js代码
# 将页面滑动到最底部
driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')
# 执行异步js函数
driver.execute_async_script('ssss()')
控制浏览器
driver的常用使用方式
#访问某个url
driver.get('https://www.baidu.com')
# 刷新
driver.refresh()
# 前进
driver.forward()
# 后退
driver.back()
# 退出
driver.quit()
# 当前的url
driver.current_url
# 保存截图
driver.save_screenshot('a.png')
查找方式
# find_element(by='id', value=None),例如driver.find_element(By.ID, 'foo')
'find_element',
# 根据元素的CSS属性查找
'find_element_by_class_name',
# 根据CSS选择器查找
'find_element_by_css_selector',
# 通过id查找
'find_element_by_id',
# 链接内的文本
'find_element_by_link_text',
# name属性
'find_element_by_name',
# 通过其链接文本的部分匹配查找元素
'find_element_by_partial_link_text',
# 标签名
'find_element_by_tag_name',
# 通过xpath查找
'find_element_by_xpath'
在element后加s,是查找相关元素的列表
等待
直接等待
# 不管是否查找到直接等待3秒
time.sleep(3)
隐式等待
# 如果没有查找到元素,最长等待10秒
driver.implicitly_wait(10)
显示等待
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# 查找一个元素
# 直到找到指定元素
kw=WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,'kw')))
webelement
一堆find查找方法,和driver用法一样
kw.text
返回元素内的文本信息
button.click()
点击button元素
kw.send_keys('Python')
添加键盘事件,向kw标签输入python
向kw标签发送回车键
from selenium.webdriver.common.keys import Keys
kw.send_keys(Keys.RETURN)
rect
返回元素的宽和高,以及在屏幕上的坐标
>>> kw.rect
{'x': 129.0, 'y': 18.0, 'width': 494.0, 'height': 22.0}
location
返回在屏幕上的坐标
>>> kw.location
{'x': 129, 'y': 18}
img.get_attribute('src')
和img.get_property('src')
用于获取标签的属性值,获取img标签的src属性
kw.value_of_css_property
获取标签CSS样式属性