vlambda博客
学习文章列表

自动化测试第四弹:WebDriver API之浏览器控制方法

webdriver提供的大量API方法方便测试、开发人员调用,其中就包括浏览器控制的相关API。

一、控制浏览器窗口大小。

希望浏览器以某种尺寸打开,让访问的网页在这种尺寸下运行,WebDriver提供的API:

  • Set_window_size():方法来设置浏览器的大小

  • minimize_window():最大化显示

  • minimize_window():最小化显示,在最小化情况下,也可以进行元素定位及操作

#导包、创建浏览器对象、获取一下url地址
from selenium import webdriver
import time

#driver:就是一个普通的变量,dr也行
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")

#比较喜欢宽屏显示,我也要设置打开的窗口为:1920 * 600
#driver是浏览器对象
# windowHandle:一个页面的标识
# driver.set_window_size(1920,600)
#最大化显示窗口
# driver.maximize_window()
# 最小化
# time.sleep(2)
# driver.minimize_window()
# time.sleep(2)
# driver.find_element_by_id("kw").send_keys("selenium")
# driver.maximize_window()

#退出浏览器对象
# driver.quit()

二、控制浏览器后退、前进、刷新

在使用浏览器浏览网页时,浏览器提供了后退和前进按钮,可以方便的在浏览过的页面之间来回切换、刷新等,WebDriver也提供了对应的:

  • back()

  • forward()

  • refresh()

#导包、创建浏览器对象、获取一下url地址
from selenium import webdriver
import time

#driver:就是一个普通的变量,dr也行
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")

#页面的前进后退操作
# driver.find_element_by_link_text("新闻").click()
# time.sleep(2)
# #后退到百度首页
# driver.back()
# time.sleep(2)
# #再前进到新闻页面
# driver.forward()
# time.sleep(2)
# #再执行一次刷新操作
# driver.refresh()

#退出浏览器对象
# driver.quit()

三、截屏操作

将运行的页面截图保存在本地,推荐使用png格式:

  • driver.save_screenshot(r"e:\abc.png")

  • driver.get_screenshot_as_file("{}.{}".format("e:/aaa","png"))

  • driver.get_screenshot_as_file(r"e:\abc.png")

#导包、创建浏览器对象、获取一下url地址
from selenium import webdriver
import time

#driver:就是一个普通的变量,dr也行
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")

# driver.save_screenshot(r"e:\sss.png")
# driver.get_screenshot_as_file("{}.{}".format("e:/aaa","png"))
# driver.get_screenshot_as_file(r"e:\sss.png")

#退出浏览器对象
# driver.quit()

四、模拟浏览器关闭

webdriver提供两种关闭的方法:

  • quit():关闭浏览器,不管页面有几个窗口,一概关掉

  • close():只关掉了一个当前的窗口,而且关掉的是前面的一个


08-webdriver API之浏览器操作

捉虫布道人的视频

 · 253 播放


五、多窗口操作

每一个页面都一个句柄(handle)值,对一个页面来说是唯一,是页面的一个标识webdriver进行自动化测试,需要将driver绑定到页面句柄,你的driver只能控制你绑定句柄的这个页面,因此对不不同的窗口页面的元素,driver就不能操作了,下面就看如何解决这种多窗口问题。

实现需求:淘宝首页->聚划算->女装

1、拿到聚划算的句柄,返回的是一个列表

  • handles = driver.window_handles

2、将句柄绑定给driver,参数是列表中聚划算页面的句柄,x为0表示浏览器中的第一个窗口,1表示第二个窗口,-1表示最后一个窗口。

  • driver.switch_to_window(handles[x])

#导包、创建浏览器对象、获取淘宝的首页
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("https://www.taobao.com")
#等待两秒钟
time.sleep(2)

#获取当前页面的句柄
# CDwindow-AA8085746F56C04363172064996E1A52
handler1 = driver.current_window_handle
print(handler1)

# 2、点击聚划算,进入聚划算页面。
driver.find_element_by_link_text("聚划算").click()
#等待两秒钟
time.sleep(2)

#第一步:获取所有打开窗口的句柄
handlers = driver.window_handles
# ['CDwindow-AA8085746F56C04363172064996E1A52', 'CDwindow-FD84D68BEFF3DBFFB64A5AC48E4F1703']
print(handlers)
#第二步:将聚划算的句柄绑定给driver
driver.switch_to_window(handlers[1])

# 3、选择“女装”,进入女装页面。
driver.find_element_by_link_text("女装").click()
#等待两秒钟
time.sleep(2)

# 4、返回到聚划算页面。
driver.back()
#等待两秒钟
time.sleep(2)

#关闭当前窗口(driver所绑定的哪个窗口)
driver.close()