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)来调用它们。
但有时我们不想调用它们,我们只想传递对可调用(函数)本身的引用,在那些情况下,我们可以简单地避免使用括号。
因此,无论何时使用函数,都必须使用括号。每当我们需要将此方法作为参数传递给其他方法时,我们就可以省略括号。
有人知道 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)来调用它们。
但有时我们不想调用它们,我们只想传递对可调用(函数)本身的引用,在那些情况下,我们可以简单地避免使用括号。
因此,无论何时使用函数,都必须使用括号。每当我们需要将此方法作为参数传递给其他方法时,我们就可以省略括号。