WebDriver 常用方法
from selenium import webdriver
#这里会打开一个Chrome浏览器空白窗口
driver = webdriver.Chrome()
在当前浏览器session中,加载一个页面
get(self, url)
# 里浏览器会导航到百度首页
driver.get("www.baidu.com")
关闭当前页面
close(self)
# 会将当前的页面关闭掉
driver.close()
隐式等待
implicitly_wait(self, time_to_wait)
*设置一个固定的超时时间(s),等待一个元素被发现或名字执行完成。在一个session中,只需要设置一次,再整个session有效期内有效。当达到固定的超时时间时,如果元素还没找到,则会抛出超时异常。如果未达到超时时间,会一直重试。*
置全局的元素等待时间30s,如果30s内找到元素,继续往下执行,如果超过30s都没有找到元素,则抛出异常。
driver.implicitly_wait(30)
注销driver,并且关闭浏览器
quit(self)
# 这里会将整个浏览器都关闭
driver.quit()
浏览器前进
forward(self)
# 模拟点击浏览器的“向前-->”
driver.forward()
浏览器后退
back(self)
# 模拟点击浏览器的“后退<--"
driver.back()
刷新当前页面
refresh(self)
# 模拟F5 刷新当前页面
driver.refresh()
将当期页面截图,保存为png格式
get_screenshot_as_file(self, filename)
filename必须要以.png为后缀
# 截图保存到images/login.png
driver.get_screenshot_as_file("images/login.png")
在当前会话中添加cookie
add_cookie(self, cookie_dict)
参数cookie_dict 是一个字典类型,至少要包含keys:“name”和“value”,可选的key还可以有“path", "domain", "secure", "expiry"
# Go to the correct domain
driver.get("http://www.example.com")
# Now set the cookie. This one's valid for the entire domain
cookie = {'name':'foo', 'value':'bar'}
driver.add_cookie(cookie)
获取当前session的全部cookie
get_cookies(self)
获取当前session中的指定cookie
get_cookie(self, name)
删除当前session中的指定cookie
delete_cookie(self, name)
删除当前session中的全部cookie
delete_all_cookies(self)
在当前页面中,同步执行JavaScript语句
execute_script(self, script, *args)
#在页面中直接执行js
driver.execute_script('$("#btn1").fadeOut();')
# 直接调用执行js语句
js = "var q=document.getElementById('username');q.style.border='1px solid red';q.value='PTQA TEST' "
driver.execute_script(js)
# 在某个已经定位的元素上执行js
button = driver.find_element_by_class_name('btn')
driver.execute_script('$(arguments[0]).click()', button)
滚动条滚动举例:
# 控制div滚动条滚动
js = '$(".modal-body").scrollTop(10000)'
driver.execute_script(js)
# 控制浏览器的滚动条
js = 'window.scrollTo(0, document.body.scrollHeight);'
driver.execute_script(js)
在当前页面中,异步执行JavaScript语句
execute_async_script(self, script, *args)
设置js超时时间
set_script_timeout(self, time_to_wait)
设置页面加载超时时间
set_page_load_timeout(self, time_to_wait)
窗口最大化
maximize_window(self)
窗口全屏
fullscreen_window(self)
窗口最小化
minimize_window(self)
设置当期窗口大小
set_window_size(self, width, height, windowHandle='current')
获取当前窗口大小
get_window_size(self, windowHandle='current')
WebDriver属性方法
返回当前页面的title
# 获得当前页面的title
title = driver.title
返回当前页面的url
# 获得当前页面的url
url = driver.current_url
返回当前页面的源码
# 获得当前页面的源码
source = driver.page_source
返回当前窗口的句柄
# 获得当前窗口的句柄
handle = driver.current_window_handle
返回当前浏览器的所有窗口句柄
# 获得当前浏览器的所有窗口句柄
handles = driver.window_handles
切换对象(alert,frame,window)
switch_to: 返回一个SwitchTo类实例对象。
切换到弹窗
alert = driver.switch_to.alert
# 切换到当前的弹窗,返回Alert类的一个实例对象
alert = driver.switch_to.alert
# 获取alert中的文本
alert.text
# 确定
alert.accept()
# 取消、关闭
alert.dismiss()
# 发送文本信息
alert.send_keys(keysToSend)
切换到默认iframe
driver.switch_to_default_content()
切换到指定iframe
driver.switch_to.frame('frame_name')
driver.switch_to.frame(1)
切换到父iframe
driver.switch_to.parent_frame()
切换到windows窗口
driver.switch_to.window('windowName')
给浏览器添加设置项ChromeOptions
options = webdriver.ChromeOptions()
options.add_argument('xxxx')
driver = webdriver.Chrome(chrome_options=options)
添加浏览器 User-Agent
options.add_argument('User-Agent=Mozilla/5.0 (Linux; U; Android 4.0.2; en-us; Galaxy Nexus Build/ICL53F) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30')
无界面运行
options.add_argument('--headless')
Chrome浏览器版本为60以上才支持****