0

场景: - 我们有通过 AJAX 检查错误的注册表单 - 字段有:email、confEmail、fname、lname、pwd、confPwd - 当用户在“email”字段和选项卡进入“confEmail”字段时发生错误检查。“pwd”和“confPwd”字段相同 - 我正在尝试编写模仿用户行为的自动化脚本,用户将在“email”字段中输入“test”,然后选项卡到下一个字段“confEmail”。这应该调用 AJAX 检查并抛出有关“无效电子邮件地址”的错误

测试配置: - 用 Linux 编写的测试 - 在 Mac 上的 iPhone 模拟器中运行(当然)

这段代码输入电子邮件地址: driver.findElement(By.cssSelector(Locators.getLocator("mobilebuy->emailAddressField"))).sendKeys("test");

由于 sendKeys 不会将焦点从该字段移开,因此我将 TAB/click 发送到下一个字段,以便 AJAX 启动。显然,这样做是行不通的。AJAX 永远不会触发,也不会出现错误消息。我可以看到当我在 iPhone 模拟器中手动模拟它时,它可以工作。

这应该跳到下一个字段: driver.findElement(By.cssSelector(Locators.getLocator("mobilebuy->emailAddressField"))).sendKeys(Keys.TAB);

或者

这应该单击应该触发 AJAX 的下一个字段: driver.findElement(By.cssSelector(Locators.getLocator("mobilebuy->confEmailAddressField"))).click();

关于如何处理此问题的任何想法?我仔细查看了它,甚至尝试将 UNICODE 传递给“TAB”键,但也没有用。

4

2 回答 2

1

首先,只有 FirefoxDriver 支持 Action 类(根据http://code.google.com/p/selenium/wiki/TipsAndTricks),但您也应该期望对 InternetExplorerDriver 的支持。

使用以下步骤使其工作: - 我有一个 Type 方法,可将项目键入表单 - 此后,我向使用 Action 类触发 Ajax 的字段发送点击,这似乎有效

// (WebDriver, email, confEmail, fname, lname, pwd, confPwd)
TypeRegistrationData(driver, "test/tester@com", "", "", "", "", "");

// action builder that tabs to next field
WebElement we = driver.findElement(By.cssSelector(Locators.getLocator("buy->emailAddressField")));
Actions builder = new Actions(driver);

builder.click(we); // this fires up the ajax that is expected
于 2012-06-04T14:20:55.347 回答
0

尝试使用动作链

Actions builder = new Actions(driver);
builder.keyDown(Keys.TAB).keyUp(Keys.TAB);
builder.build().perform();

如果我真的很绝望,我会尝试使用 sendKeys 不一定在文本字段上,而是在某些父元素上(甚至可能在 body 本身上)。

于 2012-05-16T21:46:32.750 回答