需求是:多次重复点击某一区域,无法使用XPATH定位,因为是在canvas(画布)上操作
遇到问题:使用坐标第一次点击可正常点击,再次点击后提示 Move Target OutOf Bounds Exception
解决方案:循环中的ActionChains 点击坐标设置为0.0 这样就OK了(还有其他解决方案 这里因为本人菜鸡 所这种方案稍微简单点) 因为ActionChains的坐标是在上一次的基础之上增加的
ActionChains(driver).move_by_offset(964,854).click().perform()
sleep(2)
ActionChains(driver).
move_by_offset(0, 0)
.click().perform(
from
selenium
import webdriver
from
selenium
.webdriver.common.
action
_
chai
ns
import
Action
Chai
ns
browser = webdriver.
Chrome
()
browser.get('http://www.baidu.com')
Action
Chai
ns
(dr).move_by_offset(200, ...
下载浏览器驱动
这里给出各浏览器(
Chrome
、Firefox、Edge等)的驱动下载地址,自行下载所需浏览器驱动。
将下载好的浏览器驱动放置在Python安装目录下(即Python环境变量配置目录)
3. 验证
在PyCharm
中
...
1.
Action
Chai
ns
基本用法
首先需要了解
Action
Chai
ns
的执行原理,当你调用
Action
Chai
ns
的方法
时
,不会立即执行,而是会将所有的
操作
按顺序存放在一个队列里,当你调用perform()方法
时
,队列
中
的
时
间会依次执行。
这种情况下我们可以有两种调用
2、
Action
Chai
ns
方法列表
click...
在项目的实际使用
中
,要对多个元素进行拖拽到
指定
区域,并且这些元素还分属于不同的类型
中
。在拖拽完第一个元素之后,再去拖拽其它元素,会发现又会拖拽一次第一个元素。
1、网上搜索一番,没有得到答案;
2、翻阅
Action
Chai
ns
的源代码,发现它是将所有
action
存储在一个_
action
s的变量
中
。然后在perform方法
中
去执行这个数组
中
存储的所有
action
.代...
鼠标、键盘事件是我们利用
Selenium
操控浏览器的重要交互手段,主要由
selenium
\webdriver\common\
action
_
chai
ns
.py
中
的
Action
Chai
ns
类实现。该类通过webdriver包对外暴露,即可使用from
selenium
.webdriver import
Action
Chai
ns
导入
Action
Chai
ns
类。
在
Selenium
中
实现鼠标滚轮
操作
,可以使用 `
Action
Chai
ns
` 类来模拟鼠标
操作
。下面是一个例子,演示如何在一个区域内进行鼠标滚轮
操作
:
```python
from
selenium
.webdriver.common.
action
_
chai
ns
import
Action
Chai
ns
# 获取需要
操作
的元素
element = driver.find_element_by_xpath("//div[@id='scrollable_area']")
# 将鼠标移动到元素上
Action
Chai
ns
(driver).move_to_element(element).perform()
# 在元素内进行滚轮
操作
for i in range(5):
Action
Chai
ns
(driver).move_to_element(element).perform()
Action
Chai
ns
(driver).send_keys(Keys.PAGE_DOWN).perform()
上述代码使用 `move_to_element` 方法将鼠标移动到
指定
的元素上,然后使用 `send_keys` 方法模拟按下 Page Down 键进行滚动。这里的
循环
是为了模拟
多次
滚动,你可以根据实际情况来修改
循环
次数。