我刚刚开始掌握 Selenium,并使用 Firefox IDE 制作了一个简单的登录脚本。
现在要做的是检查登录是否成功。
我能想到的最简单的方法是搜索一段只有在登录后才可见的文本,即Hi, [account name]
。
但我有点不确定如何用 Selenium 做到这一点。
有没有一种方法可以让您在页面上搜索一个词,然后在它出现时采取行动?
另外,这是检查您是否登录的最佳方法吗?
我刚刚开始掌握 Selenium,并使用 Firefox IDE 制作了一个简单的登录脚本。
现在要做的是检查登录是否成功。
我能想到的最简单的方法是搜索一段只有在登录后才可见的文本,即Hi, [account name]
。
但我有点不确定如何用 Selenium 做到这一点。
有没有一种方法可以让您在页面上搜索一个词,然后在它出现时采取行动?
另外,这是检查您是否登录的最佳方法吗?
如果你使用IDE
它应该是一个简单的例子,记录你的登录操作,然后你有你的Hi [username]
元素,右键单击它,然后在上下文菜单中你应该看到来自IDE
.
其中之一应该是verify text
or assert text
。选择它,当您运行时test case
,它将完成登录帐户并验证/断言Hi [username]
文本在页面上。
1) 是的,我正在通过搜索特定标签的方式检查是否成功登录。在我的情况下,该标签包含登录用户的 ID。例子:
<span id="username">PAVEL007</span>
所以,当我登录时:
driver.get("http://PAVEL007:OmgTooSecretToTellYou!@my-test-site.com");
然后我搜索那个标签
WebElement loggedInUser = driver.findElement(By.id("username"));
并确认我在:
Assert.assertEquals(loggedInUser.getText(),"PAVEL007");
简而言之:
笔记
假设变量是健康的,
我的伪代码的driver
活实例是基于 Java 的WebDriver
如果您使用的是 selenium IDE,这应该很简单,首先您必须记录您的登录操作,登录后您的屏幕上会显示 Hi [username] 文本,右键单击该文本,然后verifytext
在上下文菜单,您应该会看到来自 IDE 的其他选项。
其中之一应该是verify text
or assert text
。选择它,当您运行测试用例时,它将完成登录帐户并验证/断言 Hi [username] 文本在页面上
open | www.gmail.com
type | id=username |usrename
type | id=password |password
Verifytext | HI[Username]|
获取只有登录后才能访问的 url。
url = "some url accessed only after login"
driver.navigate_to url
driver.current_url == url ? "logged_in" : "not_logged_in"
如果未登录,它将被重定向到其他一些 url。这适用于 url 不是动态创建的网站
The obvious answer is the fluent method:
driver.getSource().contains("a string");
Personally, I prefer using cssLocator to locate values:
if ( driver.findElement(myElement).getText().equalsIgnoreCase("my value") ) //do
您可以使用WebDriverWait
等待selenium.webdriver.support.ui
登录。
from selenium import webdriver
from selenium.webdriver.support import ui
wait = ui.WebDriverWait(driver, 60)
wait.until(lambda driver: driver.find_elements_by_tag_name('fieldset')) # there is also a until_not do the not condition
# do something after the login, if not login after 60 there will throw timeout exception
通过断言验证登录成功。这是我的代码,您可以验证
WebElement useremail = driver.findElement(By.xpath("//input[@placeholder='Email']"));
WebElement password = driver.findElement(By.xpath("//input[@placeholder='Password']"));
WebElement login = driver.findElement(By.xpath("//a[@class='btn-signin']"));
useremail.sendKeys("abc@mailinator.com"); password.sendKeys("XXX");
login.click(); String actualurl="url";
String expectedurl= driver.getCurrentUrl();
Assert.assertEquals(expectedurl,actualurl);