Implicitly_wait () отсутствует 1 обязательный позиционный аргумент - PullRequest
0 голосов
/ 21 января 2019

Я изучаю селен с python, и в учебнике я нашел следующий код.

from selenium import webdriver
from time import gmtime, strftime
import unittest
#from builtins import classmethod

class RegisterNewUser(unittest.TestCase):
    #@classmethod
    def setUp(self):
        self.driver = webdriver.Firefox
        self.driver.implicitly_wait(30)
        self.driver.maximize_window()

        # navigate to the application home page
        self.driver.get("http://demo-store.seleniumacademy.com/")

    def test_register_new_user(self):
        driver = self.driver
        pass

    def tearDown(self):
        self.driver.quit()

if __name__ == "__main__":
    unittest.main(verbosity=2)

выдает ошибку:

File "register_new_user.py", line 10, in setUp
    self.driver.implicitly_wait(30)
TypeError: implicitly_wait() missing 1 required positional argument: 'time_to_wait'

Я пытаюсь добавить закомментированный код (classmethod), но ничего не меняется. Без test_register_new_user не выдаст ошибку.

Я использую Python 3.6.4, селен 3.141 (и geckodriver 0.23)

1 Ответ

0 голосов
/ 21 января 2019

Ваша проблема на одну строку выше:

self.driver = webdriver.Firefox

Это не создает объект браузера. Он просто устанавливает self.driver в класс webdriver.Firefox, что означает, что self.driver.implicitly_wait(30) пытается использовать implicitly_wait статическим способом, то есть webdriver.Firefox.implicitly_wait(30), поэтому он пропускает экземпляр, то есть webdriver.Firefox.implicitly_wait(an_actual_browser, 30).

Вы пропали без вести ():

self.driver = webdriver.Firefox()  # which will potentially ask for a path to 
                                   # firefox/geckodriver if it is not in PATH, 
                                   # but that is out of the scope of this question
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...