使用Selenium WebDriver测试网站时,我希望能够双击WebElement对象,而不必使用类继承或乱用ActionChains . 理想情况下,它应该可以在webelement.double_click()表单中访问,就像click()一样 . 这可以通过编辑WebElement.py文件并将以下内容添加到WebElement类来完成:
def double_click(self):
self._execute(Command.DOUBLE_CLICK)
很简单 . 但是,我一直在更新这个库,这可能会被覆盖 . 考虑到这一点,我正在尝试找出一种从我正在使用的文件中将此功能添加到WebElement对象的简单方法 . 我尝试导入WebElement并定义函数,如下所示:
from selenium import webdriver
from selenium.webdriver.remote.command import Command
from selenium.webdriver.remote.webelement import WebElement
def double_click(self):
self.execute(Command.DOUBLE_CLICK)
WebElement.double_click = double_click
然后当我运行浏览器(webdriver.Firefox())时,为每个元素定义了double_click,但它无法正常运行 . 相反,它提出了
WebDriverException: Message: [JavaScript Error: "Argument to isShown must be of type Element" ...
当我以相同的方式重新定义click()函数时,会发生同样的错误 . 我确认我试图点击的元素是类'selenium.webdriver.remote.webelement.WebElement',但似乎电线越过某处,我不知道如何 .
要清楚,我知道有解决方法 . 问题不在于我不能双击 - 我只想知道这是否可能以类似于我正在尝试的方式进行 .
1 回答
要修补
WebElement
类上的双击方法: