selenium: 鼠标右键点击、双击、移动鼠标到某个元素、鼠标拖拽

通过 Selenium 提供的 ActionChains 类来实现

from selenium import webdriver

driver = webdriver.Chrome(r'f:\chromedriver.exe')

driver.implicitly_wait(5)

driver.get('https://www.baidu.com/')

from selenium.webdriver.common.action_chains import ActionChains

ac = ActionChains(driver)

# 鼠标移动到 元素上

ac.move_to_element( driver.find_element_by_css_selector('[name="tj_briicon"]') ).perform()

或者代码:

element = bro.find_element_by_xpath('//*/div[@class="ui-page"]/a[@clstag="shangpin|keycount|product|pinglunfanye-nextpage"]')

webdriver.ActionChains(bro).move_to_element(element).click(element).perform()

直接执行javascript

# 直接执行 javascript,里面可以直接用return返回我们需要的数据

nextPageButtonDisabled = driver.execute_script( ''' ele = document.querySelector('.soupager > button:last-of-type'); return ele.getAttribute('disabled') ''')

# 返回的数据转化为Python中的数据对象进行后续处理

if nextPageButtonDisabled == 'disabled':  # 是最后一页

        return True

else: # 不是最后一页

        return False

冻结界面

在 开发者工具栏 console 里面执行如下js代码

setTimeout(function(){debugger}, 5000)

表示在 5000毫秒后,执行 debugger 命令,执行该命令会 浏览器会进入debug状态。 debug状态有个特性, 界面被冻住, 不管我们怎么点击界面都不会触发事件。

弹出对话框

三种类型: Alert(警告信息)、confirm(确认信息)和prompt(提示输入)

Alert(警告信息)

from selenium import webdriver

driver = webdriver.Chrome()

driver.implicitly_wait(5)

driver.get('http://cdn1.python3.vip/files/selenium/test4.html')

# --- alert ---

driver.find_element_by_id('b1').click()

# 打印 弹出框 提示信息

print(driver.switch_to.alert.text)

# 点击 OK 按钮

driver.switch_to.alert.accept()

confirm(确认信息)

from selenium import webdriver

driver = webdriver.Chrome()

driver.implicitly_wait(5)

driver.get('http://cdn1.python3.vip/files/selenium/test4.html')

# --- confirm ---

driver.find_element_by_id('b2').click()

# 打印 弹出框 提示信息

print(driver.switch_to.alert.text)

# 点击 OK 按钮

driver.switch_to.alert.accept()

driver.find_element_by_id('b2').click()

# 点击 取消 按钮

driver.switch_to.alert.dismiss()

prompt(提示输入)

from selenium import webdriver

driver = webdriver.Chrome()

driver.implicitly_wait(5)

driver.get('http://cdn1.python3.vip/files/selenium/test4.html')

# --- prompt ---

driver.find_element_by_id('b3').click()

# 获取 alert 对象

alert = driver.switch_to.alert

# 打印 弹出框 提示信息 print(alert.text)

# 输入信息,并且点击 OK 按钮 提交

alert.send_keys('web自动化 - selenium')

alert.accept()

# 点击 Cancel 按钮 取消

driver.find_element_by_id('b3').click()

alert = driver.switch_to.alert

alert.dismiss()

窗口大小

获取窗口大小

driver.get_window_size()

改变窗口大小

driver.set_window_size(x, y)

获取当前窗口标题

from selenium import webdriver

driver = webdriver.Chrome()

driver.implicitly_wait(5)

# 打开网站

driver.get('https://www.163.com')

# 获取网站标题栏文本

print(driver.title)

# 获取网站地址栏文本

print(driver.current_url)

截屏

from selenium import webdriver

driver = webdriver.Chrome()

driver.implicitly_wait(5)

# 打开网站

driver.get('https://www.baidu.com/')

# 截屏保存为图片文件

driver.get_screenshot_as_file('1.png')

手机模式

我们可以通过 desired_capabilities 参数,指定以手机模式打开chrome浏览器

from selenium import webdriver

mobile_emulation = { "deviceName": "Nexus 5" }

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')

input()

driver.quit()

上传文件

在线图片压缩网站: https://tinypng.com/

网站页面上传文件的功能,是通过 type 属性 为 file 的 HTML input 元素实现的

<input type="file" multiple="multiple">定位到该input元素,然后通过 send_keys 方法传入要上传的文件路径即可

# 先定位到上传文件的 input 元素

ele = wd.find_element_by_css_selector('input[type=file]')

# 再调用 WebElement 对象的 send_keys 方法

ele.send_keys(r'h:\g02.png')

上传多个文件,可以多次调用send_keys

ele = wd.find_element_by_css_selector('input[type=file]')

ele.send_keys(r'h:\g01.png')

ele.send_keys(r'h:\g02.png')

有的网页上传,是没有 file 类型 的 input 元素的。如果是Windows上的自动化,可以采用 Windows 平台专用的方法:

pip install pypiwin32 

确保 pywin32 已经安装

# 找到点击上传的元素,点击

driver.find_element_by_css_selector('.dropzone').click()

sleep(2)

# 等待上传选择文件对话框打开

# 直接发送键盘消息给 当前应用程序,

# 前提是浏览器必须是当前应用

import win32com.client

shell = win32com.client.Dispatch("WScript.Shell")

# 输入文件路径,最后的'\n',表示回车确定,也可能时 '\r' 或者 '\r\n'

shell.Sendkeys(r"h:\a2.png" + '\n')

sleep(1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值