2

我刚刚开始掌握 Selenium,并使用 Firefox IDE 制作了一个简单的登录脚本。

现在要做的是检查登录是否成功。

我能想到的最简单的方法是搜索一段只有在登录后才可见的文本,即Hi, [account name]

但我有点不确定如何用 Selenium 做到这一点。

有没有一种方法可以让您在页面上搜索一个词,然后在它出现时采取行动?

另外,这是检查您是否登录的最佳方法吗?

4

7 回答 7

2

如果你使用IDE它应该是一个简单的例子,记录你的登录操作,然后你有你的Hi [username]元素,右键单击它,然后在上下文菜单中你应该看到来自IDE.

其中之一应该是verify textor assert text。选择它,当您运行时test case,它将完成登录帐户并验证/断言Hi [username]文本在页面上。

于 2013-07-24T13:52:05.523 回答
2

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");

简而言之:

  1. 如果您的网站显示某些特定文本仅在成功登录后可见,请使用该文本
  2. 最好的方法不是搜索该文本本身,而是搜索包含该文本的元素

笔记

假设变量是健康的, 我的伪代码的driver活实例是基于 Java 的WebDriver

于 2013-07-24T13:45:58.660 回答
1

如果您使用的是 selenium IDE,这应该很简单,首先您必须记录您的登录操作,登录后您的屏幕上会显示 Hi [username] 文本,右键单击该文本,然后verifytext在上下文菜单,您应该会看到来自 IDE 的其他选项。

其中之一应该是verify textor assert text。选择它,当您运行测试用例时,它将完成登录帐户并验证/断言 Hi [username] 文本在页面上

       open | www.gmail.com
       type | id=username |usrename
       type | id=password |password
        Verifytext | HI[Username]|
于 2013-08-29T16:59:05.863 回答
1

获取只有登录后才能访问的 url。

url = "some url accessed only after login"
driver.navigate_to url
driver.current_url == url ? "logged_in" : "not_logged_in"

如果未登录,它将被重定向到其他一些 url。这适用于 url 不是动态创建的网站

于 2019-05-14T06:52:02.613 回答
0

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
于 2013-07-24T15:46:33.533 回答
0

您可以使用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
于 2019-10-30T02:31:00.843 回答
0

通过断言验证登录成功。这是我的代码,您可以验证

    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);
于 2019-10-08T06:25:06.773 回答