检查Selenium登录是否成功

时间:2013-07-24 13:27:46

标签: selenium selenium-webdriver selenium-ide

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

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

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

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

有没有办法可以在页面上搜索一个术语,然后在其出现时采取行动?

此外,这是检查您是否已登录的最佳方式?

7 个答案:

答案 0 :(得分:1)

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. 最好的方法不是搜索该文本本身,而是搜索包含文本的元素
  3. driver变量被认为是WebDriver的健康生活实例 我的伪代码是基于Java的

答案 1 :(得分:1)

如果您正在使用IDE,则应该是记录登录操作的简单案例,然后在您拥有Hi [username]元素的位置,右键单击它,然后在上下文菜单中应该看到来自IDE的其他选项。

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

答案 2 :(得分:1)

如果您使用的是selenium IDE,它应该非常简单,首先您必须记录您的登录操作,登录后您有Hi [用户名]文本出现在屏幕上,右键单击该文本然后选择您可以在上下文菜单中看到verifytext来自IDE的其他选项。

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

       open | www.gmail.com
       type | id=username |usrename
       type | id=password |password
        Verifytext | HI[Username]|

答案 3 :(得分:0)

明显的答案是流利的方法:

driver.getSource().contains("a string");

就个人而言,我更喜欢使用cssLocator来定位值:

if ( driver.findElement(myElement).getText().equalsIgnoreCase("my value") ) //do

答案 4 :(得分:0)

获取只能在登录后才能访问的网址。

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

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

答案 5 :(得分:0)

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

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.7/site-packages/mysql/connector/__init__.py", line 172, in connect
    return CMySQLConnection(*args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/mysql/connector/connection_cext.py", line 80, in __init__
    self.connect(**kwargs)
  File "/usr/lib64/python2.7/site-packages/mysql/connector/abstracts.py", line 780, in connect
    self._open_connection()
  File "/usr/lib64/python2.7/site-packages/mysql/connector/connection_cext.py", line 200, in _open_connection
    self._cmysql.connect(**cnx_kwargs)
TypeError: function takes at most 14 arguments (15 given)

答案 6 :(得分:0)

您可以使用selenium.webdriver.support.ui中的WebDriverWait来等待登录。

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
相关问题