Python: Селен представить - PullRequest
0 голосов
/ 23 мая 2018

Кто-нибудь знает разницу между этими двумя ключевыми словами из 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()

возвращает другой.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

В python функции и методы являются первоклассными объектами.Мы можем вызвать их, используя несколько скобок (скобок) в конце.

Но иногда мы не хотим их вызывать, мы просто хотим передать ссылку на саму вызываемую (функцию). В этих случаях мы можем просто избегать использования скобок.

Поэтомувсякий раз, когда вы используете функцию, то мы должны использовать скобки.И всякий раз, когда нам нужно передать этот метод в качестве аргумента какому-либо другому методу, мы можем опустить круглые скобки.

0 голосов
/ 23 мая 2018

Согласно текущим Документам API из selenium.webdriver.remote.webelement определен метод 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 также может удовлетворить ваши потребности.Но следует избегать применения Best Practices submit.

...