目录
1 下拉框选择
有时我们会碰到下拉框,WebDriver提供了Select类来处理下拉框,如百度搜索设置的下拉框。但是我们完全可以用XPath()方法和click()方法来完成,后面如果遇到下拉框我们在补充Select方法。
如图所示:
代码如下:
#下拉框选择
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
import time
web = Chrome()
#访问百度首页
web.get('https://www.baidu.com/')
#鼠标悬停在设置键,并点击
web.find_element(by=By.XPATH,value='//*[@id="s-usersetting-top"]').click()
time.sleep(2)
#选择高级
web.find_element(by=By.LINK_TEXT,value='高级搜索').click()
time.sleep(2)
#全部时间选择
web.find_element(by=By.XPATH,value='//*[@id="adv-setting-gpc"]/div/div[1]/i[1]').click()
web.find_element(by=By.XPATH,value='//*[@id="adv-setting-gpc"]/div/div[2]/div[2]/p[5]').click()
运行效果如下:
2 窗口截图
自动化用例是由程序去执行的,因此有时候输出的错误信息并不是十分明确。如果在脚本执行出错的时候能够对当前窗口截图保存,那么通过图片就可以非常直观地看出出错的原因。WebDriver提供了截图函数get_screenshot_file()来截取当前窗口。
例如:
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
web = Chrome()
#访问百度首页
web.get('https://www.baidu.com/')
web.find_element(by=By.ID, value="kw").send_keys("端午节",Keys.ENTER)
time.sleep(2)
#截取当前窗口,并制定截图图片的保存位置
web.get_screenshot_as_file("E:/PYTHON/venv/baidu.png")
运行结果如下:
运行效果如下:
3 无头浏览器
无头浏览器就是不在弹出浏览器窗口,程序在后台运行。
代码如下:
#无头浏览器
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
#准备好参数配置(无头)就是不显示页面了,不弹页面了
opt = Options()
opt.add_argument("--headless")
web = Chrome(options=opt)#把参数配置设置到浏览器中
web.get('https://www.baidu.com/')
4 自动切换窗口
假如我打开了百度首页上的新闻,但是想要回到百度首页,怎么办?下面我们就模拟自动切换窗口的操作。
代码如下:
#自动切换窗口
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
import time
web = Chrome()
web.get("https://www.baidu.com/")
#首先点击菜单栏“新闻”,进入“新闻”子窗口
web.find_element(by=By.XPATH, value='//*[@id="s-top-left"]/a[1]').click()
time.sleep(1)
#在selenium中,新窗口是默认不切换的
web.switch_to.window(web.window_handles[-1])
#关掉子窗口
web.close()
#变更selenium的窗口视角,回到原来的窗口
web.switch_to.window(web.window_handles[0])
运行效果如下: