我试图让Selenium Web驱动程序等待,但始终会出现异常“
org.openqa.selenium.TimeoutException:预期条件失败:等待By.id定位的元素的可见性:mobileNo(以100毫秒间隔尝试20秒)。
我将秒数增加到100,然后又遇到了同样的问题,我的ID是正确的。
WebDriver d = new ChromeDriver();
d.get("http://myurlOne");
WebElement username = d.findElement(By.id("username_id"));
username.sendKeys("123");
WebElement password = d.findElement(By.id("password_id"));
password.sendKeys("123");
d.findElement(By.id("loginButton")).click();
System.out.println("logged in successfully");
d.get("http://navigatedurl");
JavascriptExecutor js = (JavascriptExecutor)d;
System.out.println("navigated to new page");
WebDriverWait wait__mob = new WebDriverWait(d, 20);
try {
System.out.println("Start"+new Date());
wait__mob .pollingEvery(100,TimeUnit.MILLISECONDS).until(ExpectedConditions.visibilityOfElementLocated(By.id("mobileNo")));
d.findElement(By.id("mobileNo")).sendKeys("99999999999);
} catch (TimeoutException e) {
// TODO: handle exception
System.out.println(e.toString());
}
分区代码:
<div class="form-group">
<label class="col-xs-5 control-label" for="mobileNo">Mobile No.</label>
<div class="col-xs-6 leftpadding-none">
<input type="tel" class="form-control k-input" id="mobileNo"
name="inputmobileNo" placeholder="" maxlength="10"> <!--required
pattern="\d{10}" validationMessage="Mobile No. is Required"-->
</div>
根据WebDriverWait类的Java文档,如果要更改轮询间隔,则需要在构造函数中进行更改,因为构造函数如下:
WebDriverWait(WebDriver driver, long timeOutInSeconds, long sleepInMillis)
Wait will ignore instances of NotFoundException that are encountered (thrown) by default in the 'until' condition, and immediately propagate all others.
在尝试调用sendKeys()
元素时继续前进,您需要调用ExpectedConditions
方法elementToBeClickable。
因此您的代码将是:
WebDriver d = new ChromeDriver();
d.get("http://myurlOne");
WebElement username = d.findElement(By.id("username_id"));
username.sendKeys("123");
WebElement password = d.findElement(By.id("password_id"));
password.sendKeys("123");
d.findElement(By.id("loginButton")).click();
System.out.println("logged in successfully");
d.get("http://navigatedurl");
System.out.println("navigated to new page");
WebDriverWait wait__mob = new WebDriverWait(d, 20);
try {
System.out.println("Start"+new Date());
wait__mob.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='form-group']//label[contains(.,'Mobile No.')]//following::div[1]/input[@class='form-control k-input' and @id='mobileNo' and @type='tel']"))).sendKeys("9999999999);
} catch (TimeoutException e) {
System.out.println(e.toString());
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句