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