目录
一、浏览器控制方法
二、元素定位的方法
三、针对元素的常见操作方法
四、举例
五、遇到的问题
一、浏览器控制方法
????????1、打开网页
from selenium import webdriver
driver = webdriver.Chrome()
????????2、页面刷新
driver.refresh()
????????3、访问地址
driver.get("http://www.baidu.com")
????????4、页面切换
driver.back() #返回上一页
driver.forward() #切换到下一页
????????5、设置窗口大小
driver.set_window_size(540,960) #设置窗口大小
driver.maximize_window() #设置窗口占满整个屏幕
????????6、截屏
driver.get_screenshot_as_file("D:\")
????????7、退出
driver.close() #关闭当前窗口
driver.quit() #关闭浏览器进程
????????8、设置休眠
time.sleep(3)
????????9、智能隐性的等待
driver.implicitly_wait(10)
????????10、智能显性等待
WebDriverWait(driver,5).until(lambda driver:driver.find_element_by_id('query')) WebDriverWait(driver, 5).until_not(lambda driver:driver.find_element_by_name('query'))
二、元素定位的方法
????????以下8种是通过元素的属性直接定位:
id定位:find_element_by_id(self, id_)
name定位:find_element_by_name(self, name)
class定位:find_element_by_class_name(self, name)
tag定位:find_element_by_tag_name(self, name)
link定位:find_element_by_link_text(self, link_text)
partial_link定位find_element_by_partial_link_text(self, link_text)
xpath定位:find_element_by_xpath(self, xpath)
css定位:find_element_by_css_selector(self, css_selector)
????????以上8种都有复数形式,区别是复数形式定位返回的是一个list队列,然后还需要从这个队列中找到需要的元素:
id复数定位find_elements_by_id(self, id_)
name复数定位find_elements_by_name(self, name)
class复数定位find_elements_by_class_name(self, name)
tag复数定位find_elements_by_tag_name(self, name)
link复数定位find_elements_by_link_text(self, text)
partial_link复数定位find_elements_by_partial_link_text(self, link_text)
xpath复数定位find_elements_by_xpath(self, xpath)
css复数定位find_elements_by_css_selector(self, css_selector)
三、针对元素的常见操作方法
clear 清除元素的内容
send_keys 模拟按键输入
click 点击元素
submit 提交表单
size 获取元素的尺寸
text 获取元素的文本
get_attribute(name) 获取属性值
location 获取元素坐标,先找到要获取的元素,再调用该方法
page_source 返回页面源码
driver.title 返回页面标题
current_url 获取当前页面的URL
is_displayed() 设置该元素是否可见
is_enabled() 判断元素是否被使用
is_selected() 判断元素是否被选中
tag_name 返回元素的tagName
context_click(elem) 右击鼠标点击元素elem,另存为等行为
double_click(elem) 双击鼠标点击元素elem,地图web可实现放大功能
drag_and_drop(source,target) 拖动鼠标,源元素按下左键移动至目标元素释放
move_to_element(elem) 鼠标移动到一个元素上
click_and_hold(elem) 按下鼠标左键在一个元素上
perform() 在通过调用该函数执行ActionChains中存储行为
send_keys(Keys.ENTER) 按下回车键
send_keys(Keys.TAB) 按下Tab制表键
send_keys(Keys.SPACE) 按下空格键space
send_keys(Kyes.ESCAPE) 按下回退键Esc
send_keys(Keys.BACK_SPACE) 按下删除键BackSpace
send_keys(Keys.SHIFT) 按下shift键
send_keys(Keys.CONTROL) 按下Ctrl键
send_keys(Keys.ARROW_DOWN) 按下鼠标光标向下按键
send_keys(Keys.CONTROL,‘a’) 组合键全选Ctrl+A
send_keys(Keys.CONTROL,‘c’) 组合键复制Ctrl+C
send_keys(Keys.CONTROL,‘x’) 组合键剪切Ctrl+X
send_keys(Keys.CONTROL,‘v’) 组合键粘贴Ctrl+V
四、举例
import unittest2
import selenium import webdriver
class webcheck(unittest2.TestCase):
"""界面登录测试"""
@classmethod
def setUp(cls):
# 打开浏览器
cls.driver = webdriver.Chrome()
# 将浏览器设置为占满整个屏幕
cls.driver.maxmize_window()
#访问网页
cls.driver.get('https://xxx')
def test_openit(self):
# 找到name为userName的元素,并输入用户名hillwill_wxt
self.driver.find_element_by_name("userName").send_keys("hillwill_wxt")
# 找到name为password的元素,并输入密码123456
self.driver.find_element_by_name("password").send_keys("123456")
# 点击登录按钮
self.driver.find_element_by_xpath("//*[@id='app']/div[2]/div/ng-include/div/div/div/form/div[2]/button").click()
@classmethod
def tearDown(cls):
cls.driver.close()
if __name__=='__main__':
unittest2.main()
五、遇到的问题
? ? ? ? 问题描述:click()点击按钮没有反应
????????解决方法:click()点击按钮没有反应时,讲click()改为Enter操作通常可以解决问题。例如,将以下代码
# 点击登录按钮
self.driver.find_element_by_xpath("//*[@id='app']/div[2]/div/ng-include/div/div/div/form/div[2]/button").click()
????????改为
# 点击登录按钮
Element el = self.driver.find_element_by_xpath("//*[@id='app']/div[2]/div/ng-include/div/div/div/form/div[2]/button")
el.sendKeys(keys.ENTER)
|