【问题标题】:Selenium webdriver 3.0 + java Wait until string enteredSelenium webdriver 3.0 + java 等到输入字符串
【发布时间】:2016-12-28 08:55:59
【问题描述】:

我正在尝试使用 selenium webdriver 3.0 测试我的 hotmail 帐户。我将我的帐户设置为要求双向验证,这意味着我需要输入我的手机号码的最后 4 位数字,然后向我发送消息。然后我必须输入该代码才能打开我的电子邮件帐户。 当我使用隐式时它对我很有效,等待 60 秒直到我收到代码然后手动输入它,所以测试继续到我的电子邮件页面>>一切正常。

但是我的问题是,有没有办法让测试等到我输入代码而不是等待 60 秒?! 在使用 selenium webdriver 时手动输入一些东西可以接受吗?感谢您的帮助。显示较少

【问题讨论】:

  • 一般来说,尝试和测试不是您的SUT(被测系统)的登录机制并不是一个真正的好习惯。正如您已经遇到的那样,其原因是您无法控制的不同验证机制,例如 CAPTHA / SMS / 代码等。另一方面,在测试环境中,您可以模拟/注入更简化的内容。

标签: selenium selenium-webdriver selenium-ide selenium-chromedriver qa


【解决方案1】:

在使用 selenium webdriver 时手动输入一些内容是否可以接受?

是的,因为这个东西是用来阻止机器人活动的,就像验证码进入流程一样。因此,在这种情况下,在使用 selenium 时从邮件中读取文本后手动输入文本是可以接受的。

如果你想自动做一件事,你可以多做一件事,你应该实现 ma​​il API 在后台从你提供的帐户中读取最后一封邮件,并使用从最后一封邮件中获取必要的文本一些编程内容并使用 selenium 将其输入到文本框中。

有什么方法可以让测试等到我输入代码而不是等待 60 秒?

是的,要实现这一点,您需要使用WebDriverWait 创建自己的自定义ExpectedConditions,它将等到找到的文本框的值大于或等于4 个字符或您想要的其他合适的条件,如下所示:-

//Initialize WebDriverWait first which will wait maximum 60 seconds 
WebDriverWait wait = new WebDriverWait(driver, 60);

//Create suitable locator to locate textbox element eg. with xpath locator 
By byObject = By.xpath("enter here textbox xpath");

//This condition will wait until text box has value greater or equal 4 character
wait.until(new ExpectedCondition<Boolean>() {
                public Boolean apply(WebDriver d) {
                    return (d.findElement(byObject).getAttribute ("value").length() >= 4)
                }
            });

【讨论】:

  • 非常感谢您的帮助
  • 自动化测试中的人工干预是否可以接受?如果有专门的测试保姆也许......
  • 这实际上取决于情况,根据我的说法,如果您正在做自动化,那么手动干预没有任何意义,但是如果应用程序在某些步骤上阻止机器人活动,那么您可以做什么??
  • 而且我还提供了一个选项,可以通过使用邮件 api 读取最后一封邮件来自动执行此操作,如果您不想手动...:)
猜你喜欢
  • 2017-06-23
  • 1970-01-01
  • 2017-10-29
  • 2018-08-18
  • 1970-01-01
  • 2014-04-27
  • 1970-01-01
  • 1970-01-01
  • 2012-07-22
相关资源
最近更新 更多