Как утверждать / проверять успешный вход с помощью Python / Selenium Webdriver

Я провел небольшое исследование и не смог найти никакого ответа, специфичного для Selenium WebDriver с Python.
Я могу успешно войти на страницу, но я не могу найти способ(ы), чтобы убедиться, что вход был успешным. Название страницы не работает для меня, так как оно не меняется.
Python Selenium документация не имеет каких-либо хороших объяснений или примеров.
Все, что я хочу сделать после этого кода, это поставить строку и утверждать, что имя пользователя «Tuto» видно на странице

LoginButtonLocator = "//a[contains(text(), 'Login')]"
facebookConnectButtonLocator = "//a[contains(text(), 'Connect with Facebook')]"

facebookLoginLocatorID = "email"
facebookPasswordLocatorID = "pass"
facebookLoginButtonLocatorID = "loginbutton"

LoginButtonElement = WebDriverWait(driver, 20).until(lambda driver: driver.find_element_by_xpath(LoginButtonLocator))
LoginButtonElement.click()
facebookConnectButtonElement = WebDriverWait(driver, 20).until(lambda driver: driver.find_element_by_xpath(facebookConnectButtonLocator))
facebookConnectButtonElement.click()
facebookLoginElement = WebDriverWait(driver, 20).until(lambda driver: driver.find_element_by_id(facebookLoginLocatorID))
facebookLoginElement.send_keys(facebookID)
facebookPasswordElement = WebDriverWait(driver, 20).until(lambda driver: driver.find_element_by_id(facebookPasswordLocatorID))
facebookPasswordElement.send_keys(facebookPW)
facebookLoginButtonElement = WebDriverWait(driver, 20).until(lambda driver: driver.find_element_by_id(facebookLoginButtonLocatorID))
facebookLoginButtonElement.click()

2 ответа

  1. Я работаю с API Javascript вместо версии Python, поэтому синтаксис отличается, но вот как я бы об этом (используя mocha в качестве тестовой платформы):

    facebookLoginButtonElement.click().then(function(_) {
        driver.findElement(By.xpath('//a[text() = "Tuto"]')).then(function(userLink) {
            assert.ok(userLink);
        });
    });
    

    В версии javascript, если <a ...>Tuto</a>не может быть найден, будет ошибка перед вызовом обратного вызова, поэтому утверждение будет избыточным (будет только там, если ссылка была найдена), но я нахожу его как самодокументирующийся, поэтому я добавляю assert.

  2. Просто попробуйте найти элемент с помощью xPath:

    wait = WebDriverWait(browser, 10) 
    
    find_username = wait.until(EC.presence_of_element_located((By.XPATH,'//span[contains(text(), "Alex")]')))
    
    assert find_username
    

    Надеюсь, это поможет вам.