Понимание структуры классов с помощью Selenium - PullRequest
0 голосов
/ 26 мая 2019

Я пытаюсь понять, что я делаю здесь неправильно, я заставляю себя больше использовать классы, но я столкнулся с проблемой.

Я настроил сайт drupal для тестирования Selenium и подумал, что будусделать из него класс, пока у меня есть:

Импортировать класс

from platform_drupal import Drupal

Установить драйвер

def driver_init(using_linux, proxy):
    options = Options()
    options.headless = False
    options.add_argument('start-maximized')
    options.add_argument('disable-infobars')
    options.add_argument('--disable-extensions')
    options.add_argument('--ignore-certificate-errors')
    options.add_argument('--ignore-ssl-errors')
    if proxy == "0.0.0.0:00":
        print("[-] ======= PROXY DISABLED ...")
    else:
        print("[+] ======= USING PROXY: " + str(proxy) + " ...")
        options.add_argument('--proxy-server=%s' % proxy)
    if using_linux == True:
        return webdriver.Chrome("/usr/bin/chromedriver", chrome_options=options)
    else:
        return webdriver.Chrome("chromedriver.exe", chrome_options=options)

Зациклить сайт из текстового файла и отправить его в класс

    driver = driver_init(False, "")
    input_file = open("links\\linksTo[R]Page.txt", "r")
    for each_line in input_file:
        try:
            Drupal.login(driver, each_line.rstrip('\n'))
        except Exception as e: 
            print("REGISTRATION ERROR: ", e)

Содержимое файла класса

from selenium.webdriver.support.ui import Select

class Drupal:

    def __init__(self, driver):
        self.driver = driver
        self.url = url

    def login(self, driver, url):
        driver.get(url)
        driver.find_element_by_id("edit-mail").click()
        driver.find_element_by_id("edit-mail").clear()
        driver.find_element_by_id("edit-mail").send_keys("EMAIL")
        driver.find_element_by_id("edit-field-first-name-und-0-value").click()
        driver.find_element_by_id("edit-field-first-name-und-0-value").clear()
        driver.find_element_by_id("edit-field-first-name-und-0-value").send_keys("FIRST_NAME")
        driver.find_element_by_id("edit-field-last-name-und-0-value").click()
        driver.find_element_by_id("edit-field-last-name-und-0-value").clear()
        driver.find_element_by_id("edit-field-last-name-und-0-value").send_keys("LAST_NAME")
        driver.find_element_by_id("edit-captcha-response").click()
        driver.find_element_by_id("edit-captcha-response").clear()
        driver.find_element_by_id("edit-captcha-response").send_keys("CAPTCHA")
        sleep(3)
        driver.find_element_by_id("edit-submit").click()

У меня всегда были проблемы с классами, поэтому я стараюсь выучить как можно больше, приведенный выше код при запуске выдает ошибку:

login() missing 1 required positional argument: 'url'

При просмотре кода яне вижу каких-либо очевидных ошибок (которые я вижу в любом случае), есть ли что-то, что я пропустил?любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...