Python: 硒提交

Python: Selenium submit

有人知道 Selenium 中这两个关键字之间的区别吗:

element.submit()

element.submit

我有一些表格使用第一个,其他表格使用第二个。

例如,

self.webdriver.find_element_by_xpath('//*[@id="search"]/input').submit

return 结果 while

self.webdriver.find_element_by_xpath('//*[@id="search"]/input').submit()

return另一个。

谢谢!

根据 selenium.webdriver.remote.webelement the method submit() 的当前 API 文档 定义如下:

submit()
    Submits a form.

根据源代码,submit() 查找 ancestor-or-self 作为 form,创建一个事件并调度。如果失败,则执行 Command.SUBMIT_ELEMENT

源代码:

def submit(self):
    """Submits a form."""
    if self._w3c:
        form = self.find_element(By.XPATH, "./ancestor-or-self::form")
        self._parent.execute_script(
            "var e = arguments[0].ownerDocument.createEvent('Event');"
            "e.initEvent('submit', true, true);"
            "if (arguments[0].dispatchEvent(e)) { arguments[0].submit() }", form)
    else:
        self._execute(Command.SUBMIT_ELEMENT)

因此,很明显 submit() 是完整的证明方法,尽管在某些情况下 submit 也可以满足您的需求。但必须避免遵循最佳实践 submit

在 python 中,函数和方法是 first-class 对象。我们可以通过在末尾使用一些圆括号(brackets)来调用它们。

但有时我们不想调用它们,我们只想传递对可调用(函数)本身的引用,在那些情况下,我们可以简单地避免使用括号。

因此,无论何时使用函数,都必须使用括号。每当我们需要将此方法作为参数传递给其他方法时,我们就可以省略括号。