前面几篇介绍了元素定位相关的方法,从这一篇开始会介绍得到元素对象后的各种操作方法。web自动化的难点就是如何准确稳定地获得元素对象,之后的操作就显得容易很多,浏览一下API的文档做一下搬运工就能实现。 俗话说授之以鱼不如授之以渔,给出python的webdriver API的文档地址供大家学习,这里则选取一些常用的方法通过举例帮助大家知道如何运用。
今天主要介绍一下浏览器控制的一些常用属性和方法,他们大多集中在selenium.webdriver.remote.webdriver类中。不管是用哪种浏览器,他们都继承自remote.webdriver类,用的方法属性都是相同的。先列举几个常见的属性。
current_url: 返回当前浏览器的url
title: 返回当前页面title
current_window_handler:返回当前窗口的句柄,这在多窗口切换的时候会用到
window_handlers: 返回当前浏览器的所有窗口的句柄。下面举个多窗口切换的例子。
driver = webdriver.Firefox()
# 打开网页
driver.get('https://www.baidu.com')
# 获取主页窗口的句柄
search_window = driver.current_window_handle
# 打开新窗口
driver.find_element_by_xpath("//map[@name='mp']/area").click()
# 获取所有窗口的句柄
all_windows = driver.window_handles
sleep(3)
# 遍历所有句柄,如果和主页句柄相同则切换回主页
for window in all_windows:
if window == search_window:
driver.switch_to.window(window)
一下是常见的控制浏览器的方法:
get(url): 加载指定的网页
back()/forward(): 对应于浏览器的向前向后按钮
implicitly_wait(time): 隐式等待,在元素被找到前的等待时间,time的单位是秒。它的作用域是全局的,一个session只用设置一次,任意元素如果在指定时间内没有被找到则抛错。会用单独一篇来介绍元素等待的话题,在这里就不详细解释了
close(): 关闭当前的窗口
quit(): 关闭整个浏览器,所有的窗口都会关闭
refresh(): 刷新网页
get_screenshot_as_file(filename): 保存浏览器的截图到一个png文件, 这里要注意filename需要是一个完整的路径,例如/Users/jack/Downloads/screenshot.png.
set_window_position(x,y,windowHandle='current'): x,y的单位是像素,设置浏览器的位置。get_window_position()则可以获得浏览器当前的位置。
set_window_size(width,height, windowHandle='current'): width, height的单位是像素,设置浏览器的长宽。get_window_size()可以获得浏览器的尺寸。
maximize_window(): 最大化窗口。