我刚刚掌握了Selenium,并使用Firefox IDE制作了一个简单的登录脚本。
现在要做的是检查登录是否成功。
我能想到的最简单的方法是搜索一段只有在登录后才能看到的文字,即Hi, [account name]
。
但我对Selenium如何做到这一点有点不确定。
有没有办法可以在页面上搜索一个术语,然后在其出现时采取行动?
此外,这是检查您是否已登录的最佳方式?
答案 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");
简而言之:
注
driver
变量被认为是WebDriver
的健康生活实例
我的伪代码是基于Java的
答案 1 :(得分:1)
如果您正在使用IDE
,则应该是记录登录操作的简单案例,然后在您拥有Hi [username]
元素的位置,右键单击它,然后在上下文菜单中应该看到来自IDE
的其他选项。
其中一个应该是verify text
或assert text
。选择该项,然后当您运行test case
时,它将完成登录帐户并验证/断言页面上有Hi [username]
文本。
答案 2 :(得分:1)
如果您使用的是selenium IDE,它应该非常简单,首先您必须记录您的登录操作,登录后您有Hi [用户名]文本出现在屏幕上,右键单击该文本然后选择您可以在上下文菜单中看到verifytext
来自IDE的其他选项。
其中一个应该是verify text
或assert 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