selenium_鼠标操作(Action_chains.py)、特殊场景:画布上画多边形

下面我们通过一张表对上图中对外使用的成员进行分类(即带下划线的成员不放入下表):
action_chains.py >>> 一连串的鼠标操作

ActionChains方法列表

click(on_element=None) ——单击鼠标左键
click_and_hold(on_element=None) ——点击鼠标左键,不松开
context_click(on_element=None) ——点击鼠标右键
double_click(on_element=None) ——双击鼠标左键
drag_and_drop(source, target) ——拖拽到某个元素然后松开
drag_and_drop_by_offset(source, xoffset, yoffset) ——拖拽到某个坐标然后松开
key_down(value, element=None) ——按下某个键盘上的键
key_up(value, element=None) ——松开某个键
move_by_offset(xoffset, yoffset) ——鼠标从当前位置移动到某个坐标
move_to_element(to_element) ——鼠标移动到某个元素
move_to_element_with_offset(to_element, xoffset, yoffset) ——移动到距某个元素(左上角坐标)多少距离的位置
perform() ——执行链中的所有动作
release(on_element=None) ——在某个元素位置松开鼠标左键
send_keys(*keys_to_send) ——发送某个键到当前焦点的元素
send_keys_to_element(element, *keys_to_send) ——发送某个键到指定元素
drag_and_drop(鼠标拖动)

多边形一直画不出来。重点是还不知道怎么解决,网上也没有 has no attribute ‘w3c’的信息,所以总结下:

问题现象:点击的元素无法定位,鼠标移动到了元素上,执行失败 >>> 报错 has no attribute ‘w3c’ ?
解决办法:

driver = webdriver.Chrome
# 鼠标移动到这个元素上,并且进行后续操作
ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()

# 这叫做画布,这块坑了我好长时间。
class Base:
    def move_click(self, canvas, *args):
        """
        移动鼠标并单击,driver是驱动,element是定位元素的内容,*args是2个形参,内容类似:990,110
        :return: 
        """
         ActionChains(driver).move_to_element(canvas).move_by_offset(990, 123).release().click().perform()
         
	def move_click_double(self, canvas, *args):
		"""
        移动鼠标并单击,driver是驱动,element是定位元素的内容,*args是2个形参,内容类似:990,110
        :return: 
        """
         ActionChains(driver).move_to_element(canvas).move_by_offset(990, 123).release().double_click().perform()

实际运用中,这么写

# 定义了画布
canvas = driver.find_element_by_xpath("//canvas[@id='#canvas']")
# move_click()是上面封装的操作:鼠标移动到画布的坐标位置,且单击。
driver.move_click(canvas, 990, 110)
# 鼠标移动到画布的坐标位置,且双击。
driver.move_click_double(canvas, 123, 234)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿_焦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值