Selenium Webdriver之文件上传操作、文件下载操作、WebDriver的高级特性、时间等待、其他设置、配置CHrome浏览器、SSL证书错误处理

  • Post author:
  • Post category:其他




一、文件上传操作

1、直接上传

send_keys()
driver.find_element_by_id('uploadFile').send_keys("D://Users//TestFile//test.text")

2、使用Autolt上传

1)、文件上传

driver.find_element_by_id('fileupload-btn).click()
os.system(r"D://Users//TestFile//test.text")

2)、Autolt的使用

①、Autolt工具主要用来操作Windows上的窗口;

②、Autolt官方地址:https://www.autoitscript.com/site/

③、Autolt下载地址:https://www.autoitscript.com/site/autoit/downloads/

在这里插入图片描述

④、在文件上传主要用到如下功能

1、AutoIt Windows Info:用于定位元素,识别并获取WIndows上的控件信息;
2、SciTE Script Editor:用于编辑脚本,将获取的元素写成AutoIt执行脚本;
3、Compile Script to.exe:用于将编写好的脚本AutoIt转成可执行文件.exe;
4、Run Script:用于执行AutoIt脚本;

⑤、打开AutoIt Windows Info,鼠标拖动工具上的【Finder Tool】图标至需要识别的控件上,控件的标识信息会显示在工具的下方。



二、文件下载操作

手动修改浏览器的下载路径和通过WebDriver的options设置修改浏览器的下载路径。

1、手动修改

在这里插入图片描述

2、通过options修改

在Chrome文件下载中可以通过设置字段值改变文件的下载路径

1、download.default_directory:设置下载路径
2、download.prompt_for_download:设置为False则在下载时不需要提示



三、WebDriver的高级特性

1、cookie操作

对cookie的操作常用于绕过登录,WebDriver针对cookie提供了诸如读取、添加、删除等方法。

1、get_cookies():以字典的形式返回cookie所有信息;
2、get_cookie(name):返回cookie字典中key为name的值;
3、add_cookie(cookie_dict):手动添加cookie;
4、delete_cookie(name):删除cookie字典中key为name的值;
5、delete_all_cookies():删除所有cookie信息;

2、JavaScript调用

driver.execute_script("document.getElementById('id')")

3、屏幕截图

1、save_screenshot():获取当前窗口的屏幕截图,并且以png文件格式存储;
2、get_screenshot_as_base64():以base64编码字符串的形式获取当前窗口的屏幕截图;
3、get_screenshot_as_file():获取当前窗口的屏幕截图,使用完整的路径;
4、get_screenshot_as_png():以二进制数据形式获取当前窗口的屏幕截图;



四、时间等待

1、强制等待

import time
time.sleep(5)			#时间单位默认为秒

2、隐式等待

driver.implicitly_wait(10)
driver.find_element_by_id("id").click()

设置隐式等待的时间为10秒,如果找到元素则立即执行下一个动作click,不会完全等够10秒才去执行下一个动作;如果超过10秒还没有找到该元素,则抛出未能定位到该元素的错误。

3、显示等待

导入WebDriverWait:
from selenium.webdriver.support.ui import WebDriverWait
class WebDriverWait(object):
    def __init__(self, driver, timeout, poll_frequency=POLL_FREQUENCY, ignored_exceptions=None):
driver:webdriver实例:Chrome等;
timeout:超时时间;
poll_frequency:调用后面操作的频率,默认为0.5s;
ignored_exceptions:忽略的异常,默认为NoSuchElementException;
导入:expected_conditions:
from selenium.webdriver.support import expected_conditions



五、其他设置

1、限制页面加载时间

set_page_load_timeout(time):设置页面加载的超时时间;
driver.set_page_load_timeout(30)

2、获取环境信息

capabilities[]
driver.capabilities['browserVersion']
browserVersion:获取浏览器版本信息;
browserName:获取浏览器名称信息;
platformName:获取操作系统名称;
proxy:获取代理信息;
timeouts:获取超时时间(返回的是一个字典);
超时时间返回3个设置值:
1、implicit:查找元素的超时时间,单位毫秒,默认为0;
2、pageLoad:等待文档完全加载的时间,单位毫秒,默认为30秒;
3、script:加载脚本的超时时间,单位毫秒,默认为30秒;



六、配置Chrome浏览器

1、屏蔽浏览器对Selenium的检测

在使用Selenium时,浏览器会检测是被自动测试软件控制,而非人的行为,会提示“Chrome正受到自动测试软件的控制”。

解决办法:屏蔽浏览器的检测

options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches',['enable-automation'])
driver = webdriver.Chrome(options=options)

ChromeOptions是一个配置Chrome启动时属性的类,使用该类可以对Chrome进行一些设置:

1、设置Chrome二进制文件的位置(binary_location)
2、添加启动参数(add_argument)
3、添加拓展应用(add_extension,add_encoded_extension)
4、添加实验性质的设置参数(add_experimental_option)
5、设置调试器地址(debugger_address)

2、禁止图片和视频加载

options = webdriver.ChromeOptions()
prefs = {"profile.managed_default_content_settings.images":2}
options.add_experimental_option('prefs',prefs)
driver = webdriver.Chrome(chrome_options=options)

3、添加扩展插件

options = webdriver.ChromeOptions()
options.add_extension('C:/extension/xxxx.crx')
driver = webdriver.Chrome(chrome_options=options)

4、设置编码

options = webdriver.ChromeOptions()
options.add_argument('lang=zh_CN.UTF-8')
driver = webdriver.Chrome(chrome_options=options)

5、其他参数

1、添加代理:options.add_argument("--proxy-server=http://192.10.1.1:8888")
2、模拟移动设备:options.add_argument( )
3、禁用JS:options.add_argument("--disable-javascript")
4、禁用插件:options.add_argument("--disable-plugins")
5、禁用java:options.add_argument("--disable-java")
6、启动时最大化:options.add_argument("--disable-maximized")



七、SSL证书错误处理

1、Chrome浏览器

options = webdriver.ChromeOptions()
options.add_argument("--ignore-certificate-errors")
driver = webdriver.Chrome(chrome_options=options)



版权声明:本文为yutian8233原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。