Selenium 右键单击有时双击
Selenium right click sometimes double taps
我正在为扫雷游戏做一个机器人,我需要能够在其中右键单击图块以警告炸弹。我使用以下代码创建了一个用于点击图块的函数:
from selenium import webdriver
from selenium.webdriver import ActionChains
def click(rad, kol, bomb = False):
if int(rad) > 0 and int(kol) > 0:
tile = driver.find_element_by_xpath('//*[@id="{}_{}"]'.format(int(rad), int(kol)))
if bomb == False:
#Left click
tile.click()
else:
#Right click
actionChains.context_click(tile).perform()
print("Right click")
但是当我使用以下代码调用该函数时:
click(10, 10, True)
click(5, 5, True)
click(1,1,True)
坐标为 (10, 10) 和 (5,5) 的图块都会打开和关闭,但只有 (10,10) 会在之后再次打开。同时,坐标为 (1,1) 的图块不会打开和关闭,但可以正常工作。
每次右键单击代码 运行 时,我都会打印出来,并且我应该打印出 "right click" 3 次。
编辑:我发现问题可能是因为 actionChains 记住了它之前的动作,因此再次点击所有的图块。但是我不知道如何删除链条的先前操作。 reset_actions() 函数似乎没有删除任何操作
我看到 reset_actions
报告了一些错误
https://github.com/SeleniumHQ/selenium/issues/6837
但它已经关闭并且应该没问题(我的机器上也有这个问题)...要么尝试更新驱动程序,要么我想如果它没有帮助那么只需在 [=13= 中再分配一次 actionChains
] 陈述。这是我目前想到的唯一快速解决方案。
def click(rad, kol, bomb = False):
if int(rad) > 0 and int(kol) > 0:
tile = driver.find_element_by_xpath('//*[@id="{}_{}"]'.format(int(rad), int(kol)))
if bomb == False:
#Left click
tile.click()
else:
#Right click
actionChains = ActionChains(driver)
actionChains.context_click(tile).perform()
print("Right click")
我正在为扫雷游戏做一个机器人,我需要能够在其中右键单击图块以警告炸弹。我使用以下代码创建了一个用于点击图块的函数:
from selenium import webdriver
from selenium.webdriver import ActionChains
def click(rad, kol, bomb = False):
if int(rad) > 0 and int(kol) > 0:
tile = driver.find_element_by_xpath('//*[@id="{}_{}"]'.format(int(rad), int(kol)))
if bomb == False:
#Left click
tile.click()
else:
#Right click
actionChains.context_click(tile).perform()
print("Right click")
但是当我使用以下代码调用该函数时:
click(10, 10, True)
click(5, 5, True)
click(1,1,True)
坐标为 (10, 10) 和 (5,5) 的图块都会打开和关闭,但只有 (10,10) 会在之后再次打开。同时,坐标为 (1,1) 的图块不会打开和关闭,但可以正常工作。
每次右键单击代码 运行 时,我都会打印出来,并且我应该打印出 "right click" 3 次。
编辑:我发现问题可能是因为 actionChains 记住了它之前的动作,因此再次点击所有的图块。但是我不知道如何删除链条的先前操作。 reset_actions() 函数似乎没有删除任何操作
我看到 reset_actions
报告了一些错误
https://github.com/SeleniumHQ/selenium/issues/6837
但它已经关闭并且应该没问题(我的机器上也有这个问题)...要么尝试更新驱动程序,要么我想如果它没有帮助那么只需在 [=13= 中再分配一次 actionChains
] 陈述。这是我目前想到的唯一快速解决方案。
def click(rad, kol, bomb = False):
if int(rad) > 0 and int(kol) > 0:
tile = driver.find_element_by_xpath('//*[@id="{}_{}"]'.format(int(rad), int(kol)))
if bomb == False:
#Left click
tile.click()
else:
#Right click
actionChains = ActionChains(driver)
actionChains.context_click(tile).perform()
print("Right click")