AttributeError: у объекта 'WebDriver' нет атрибута 'send_keys' с send_keys [duplicate]

Как и другие ответы, вы не можете назначить параметр «error», потому что это константа (допустимая переменная, если вы это сделаете). Теперь вы можете спуститься по пути модификации функции, чтобы вернуться в качестве строки, как было предложено, но вам было бы лучше использовать более структурированный подход и фактически выбросить ошибку.

Что-то вроде этого:

enum sumbissionErrors: Error {
    case noName
    case noLastName
    case noEmail
    case noPassword

    var description: String {
        switch self {
        case .noName:
            return "Name cannot be empty"
        case .noLastName:
            return "Last name cannot be empty"
        case .noEmail:
            return "Email cannot be empty"
        case .noPassword:
            return "Password cannot be empty"
        }
    }
}

func submitData() throws {
    if nameText.text == nil || nameText.text!.isEmpty {
        throw sumbissionErrors.noName
    }

    if lastNameText.text == nil || lastNameText.text!.isEmpty {
        throw sumbissionErrors.noLastName
    }

    if emailText.text == nil || emailText.text!.isEmpty {
        throw sumbissionErrors.noEmail
    }

    if passwordText.text == nil || passwordText.text!.isEmpty {
        throw sumbissionErrors.noPassword
    }

    // Do whatever you want now that the data is valid.
}

@IBAction func submitButton(_ sender: UIButton) {
    do {
        try submitData()
    }
    catch {
        if let sumbmissionError = error as? sumbissionErrors {
            switch sumbmissionError {
            case .noName:
                nameErrLbl.text = sumbmissionError.description
            case .noLastName:
                lastNameErrLbl.text = sumbmissionError.description
            case .noEmail:
                emailErrLbl.text = sumbmissionError.description
            case .noPassword:
                passwordErrLbl.text = sumbmissionError.description
            }
        } else {
            // This will probably never happen but it indicates that some other more general error occured and needs to be handled here.
        }
    }
}

Это всего лишь пример, и, как и ваш оригинал, он будет только бросать первую ошибку, с которой он сталкивается. Возможно, вы захотите переструктурировать все, чтобы можно было пометить несколько ошибок. То есть возможно, что более одного из них могут быть пустыми.

0
задан DebanjanB 21 January 2019 в 04:34
поделиться

1 ответ

Ваш кодовый блок был почти идеальным.

Это сообщение об ошибке ...

AttributeError: 'WebDriver' object has no attribute 'send_keys'

... подразумевает, что реализация WebDriver не имеет атрибута send_keys

selenium.webdriver.remote.webelement который представляет элемент DOM , содержит метод send_keys (* value) , который определен как:

send_keys(*value)

 Simulates typing into the element.

, поэтому должен быть связан подходящий способ вызова send_keys() на элемент следующим образом:

driver.find_element_by_css_selector("input.string").send_keys("Yuri")
0
ответ дан DebanjanB 21 January 2019 в 04:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: