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