Selenium webdriver 3.0 + java等到字符串输入

时间:2016-08-21 21:00:06

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

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

但我的问题是,有没有办法让测试等到我输入代码而不是等待60秒? 使用selenium webdriver时手动输入一些东西是可以接受的吗? thx for help。显示更少

1 个答案:

答案 0 :(得分:1)

  

使用selenium webdriver时手动输入一些东西是可以接受的吗?

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

如果您想自动执行此操作,您可以执行更多操作,您应该实施邮件API 以在后台读取您提供的帐户中的最后一封邮件,并使用上一封邮件中的必要文​​本一些编程内容,并使用selenium将其输入文本框。

  

有没有办法让测试等到我输入代码而不是等待60秒?

是的,要实现这一点,您需要使用ExpectedConditions创建自己的自定义WebDriverWait,它将等到找到的文本框的值大于或等于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)
                }
            });