我正在自动化flipkart
站点。我的目标是login
站点和logout
站点。
我成功登录但无法注销,因为注销链接位于子菜单(鼠标悬停)下。
附上截图。
我尝试了所有可能的场景,比如使用Actions
class 和javascriptexecutor
.
仅当我手动将光标放在子菜单上时使用javascriptexecutor
它才能正常工作,否则会引发错误。
我正在自动化flipkart
站点。我的目标是login
站点和logout
站点。
我成功登录但无法注销,因为注销链接位于子菜单(鼠标悬停)下。
附上截图。
我尝试了所有可能的场景,比如使用Actions
class 和javascriptexecutor
.
仅当我手动将光标放在子菜单上时使用javascriptexecutor
它才能正常工作,否则会引发错误。
我没有问题让这个工作。
下面是使用getting-started-with-selenium 框架的脚本
@Config(url="http://flipkart.com", browser=Browser.FIREFOX)
public class TestFlikPart extends AutomationTest {
@Test
public void testLoginLogout() {
String username = "<username>";
String password = "<password>";
click(By.cssSelector("a[href*='/login']"))
.setText(By.cssSelector("input[name='email']"), username)
.setText(By.cssSelector("input[name='password']"), password)
.click(By.cssSelector("input[type='submit'][value='Login']"))
.validatePresent(By.cssSelector("li.greeting-link > a"))
.hoverOver(By.cssSelector("li.greeting-link > a"))
.click(By.cssSelector("ul.account-dropdown a[href*='/logout']"))
// should be logged out now.
.validatePresent(By.cssSelector("a[href*='/login']"));
}
}
我认为 MrTi 是正确的 - 我认为您可能忘记.perform()
了采取行动。关于该hoverOver()
方法的进一步解释,这就是该方法包含的内容 -
actions.moveToElement(driver.findElement(by)).perform();