如何使用Python / Selenium Webdriver断言/验证成功登录

时间:2016-10-06 18:24:40

标签: python selenium selenium-webdriver ui-automation

我做了一些研究,找不到任何特定于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()

3 个答案:

答案 0 :(得分:0)

我正在使用Javascript API而不是Python版本,因此语法不同,但这是我将如何得到它(使用mocha作为测试框架):

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

在javascript版本中,如果找不到<a ...>Tuto</a>,则在调用回调之前会出现错误,因此断言将是多余的(只有在找到链接时才会到达),但我发现它是自我记录的,所以我添加了断言。

答案 1 :(得分:0)

尝试使用xPath找到一个元素:

wait = WebDriverWait(browser, 10) 

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

assert find_username

希望,它会对你有帮助。

答案 2 :(得分:0)

考虑到您正在使用Chrome的webdriver_manager,虽然我不会写很多效果,但我写这本书的目的是,您可以在带有webdriver_manager或不带有webdriver_manager的两种情况下使用代码,只要您在添加可执行文件方面做出了重大更改 webdriver 的路径(如果未使用 webdriver_manager )。你去...

from selenium import webdriver

//这是用于导入Webdriver

from webdriver_manager.chrome import ChromeDrivermanager
driver = webdriver.Chrome(ChromeDriverManager().install())

driver.get("https://somedummy.domain.com/login")
driver.find_element_by_name("username").send_keys("somedummyvalidated@email.com")
driver.find_element_by_name("password").send_keys("someDummyPass")
driver.find_element_by_id("btnLogin").click()

此块与发送密钥有关,现在,如果您正确登录,则页面标题必须更改。只需使用以下代码即可获取标题,并在登录前后使用断言或匹配标题。

driver.title