1 窗口大小
获取窗口的属性和相应的信息,并对窗口进行控制。
1.1 窗口大小
wd.get_window_size()
wd.set_windwo_size(x, y)
1.2 获取当前窗口标题
wd.titile
1.3 获取当前窗口URL地址
wd.current_url
1.4 示例
访问百度,获取当前窗口大小并调整,获取当前窗口的标题和URL
rom selenium import webdriver
import time
wd = webdriver.Chrome()
wd.implicitly_wait(5)
wd.get('https://www.baidu.com/')
print(wd.get_window_size())
wd.set_window_size('2046', '1024')
print(wd.title)
print(wd.current_url)
time.sleep(3)
wd.quit()
2 截屏
wd.get_screenshot_as_file('1.png')
3 手机模式
通过desired_capabilities 参数,指定以手机模式打开Chrome浏览器。
from selenium import webdriver
from time import sleep
mobile_emulation = { "deviceName": "iPhone 8" }
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)
driver = webdriver.Chrome( desired_capabilities = chrome_options.to_capabilities())
driver.get('http://www.baidu.com')
sleep(3)
driver.quit()
4 上传文件
4.1 存在file类型的input元素
通常,网站页面上传文件的功能,是通过type属性为file的 HTML input元素实现的。如著名的在线图片压缩网站: https://tinypng.com/
<input type="file" multiple="multiple">
使用selenium自动化上传文件,我们只需要定位到该input元素,然后通过send_keys 法传入要上传的文件路径即可。如果需要上传多个文件,可以多次调用send_keys。 示例:在https://tinypng.com/中上传多张图片。
from selenium import webdriver
from time import sleep
wd = webdriver.Chrome()
wd.implicitly_wait(5)
wd.get('https://tinypng.com/')
upload = wd.find_element_by_css_selector('input[type="file"]')
upload.send_keys(r'D:\TinyPng1.png')
upload.send_keys(r'D:\TinyPng2.png')
sleep(3)
wd.quit()
4.2 不存在file类型的input元素
对于没有file类型的input元素的网页上传,如果是Windows上的自动化,可以采用 Windows平台专用的方法: 执行
pip install pypiwin32
确保pywin32已经安装,然后参考如下示例代码:
wd.find_element(By.CSS_SELECTOR, '.dropzone').click()
sleep(2)
import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
shell.Sendkeys(r"h:\a2.png" + '\n')
sleep(1)
5 自动化Edge浏览器
自动化基于Chromium内核的微软最新Edge浏览器
- 查看Edge的版本: 点击菜单>帮助和反馈>关于Microsoft Edge,在弹出界面中,查看到版本。
- 下载对应版本的驱动:Edge Driver
- 自动化代码中指定使用Edge Webdriver类
3.1 若将Edge Driver放在指定目录里,需指定Edge驱动路径。 3.2 若将Edge Driver放到python的安装目录下,无需指定Edge驱动路径,但需要将Edge Driver重新命名成MicrosoftWebDriver.exe
from selenium import webdriver
from time import sleep
wd = webdriver.Edge(r'D:\msedgedriver.exe')
wd = webdriver.Edge()
wd.get('https://www.baidu.com/')
sleep(3)
wd.quit()
|