【问题标题】:Python: Selenium submitPython:硒提交
【发布时间】:2018-11-02 11:44:48
【问题描述】:

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

element.submit()

element.submit

我有一些表单与第一个表单一起使用,而其他表单与第二个表单一起使用。

例如,

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

同时返回结果

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

返回另一个。

谢谢!

【问题讨论】:

  • 你能用element.submit的一些工作示例更新这个问题吗?
  • self.webdriver.find_element_by_xpath('//*[@id="search"]/input').submit 返回结果”是什么意思?什么结果?一切都可能“返回结果”...你能给你的问题赋予更多意义吗?

标签: python selenium submit


【解决方案1】:

根据selenium.webdriver.remote.webelement 的当前API Docs,方法submit() 定义如下:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-10-28
      • 2015-12-19
      • 2018-02-04
      • 1970-01-01
      • 2016-06-02
      • 1970-01-01
      • 1970-01-01
      • 2020-06-24
      • 1970-01-01
      相关资源
      最近更新 更多