Selenium Webdriver wait预期条件失败:等待By.id定位的元素的可见性 [英] Selenium Webdriver wait Expected condition failed: waiting for visibility of element located by By.id
问题描述
我试图让Selenium Web驱动程序等待,但总是会出现异常"
I am trying to put selenium web driver wait, but always I am getting an exception "
org.openqa.selenium.TimeoutException:预期条件失败:等待By.id定位的元素的可见性:mobileNo(以100毫秒间隔尝试20秒)".
org.openqa.selenium.TimeoutException: Expected condition failed: waiting for visibility of element located by By.id: mobileNo (tried for 20 second(s) with 100 milliseconds interval)".
我将秒数增加到100,然后又遇到了同样的问题,我的ID是正确的.
I increased seconds to 100, then also getting the same problem, my id is correct.
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代码:
<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>
推荐答案
根据
As per the Java Docs of WebDriverWait Class if you want to change the Polling Interval you need to change it in the constructor as the constructor is as follows :
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
方法
Moving forward as you are trying to invoke sendKeys()
on the element you need to invoke the ExpectedConditions
method 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());
}
这篇关于Selenium Webdriver wait预期条件失败:等待By.id定位的元素的可见性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!