我试过这段代码:
var numberCount = 0;
var numberCountLimit = 2;
var letterCount = 0;
var letterCountLimit = 3;
$(document).ready(function() {
$('.personalisation').keypress(function(key) {
var currentText = $(this).val();
numberCount = 0;
letterCount = 0;
for (var i = 0, len = currentText.length; i < len; i++) {
if(currentText.charCodeAt(i) < 48 || currentText.charCodeAt(i) > 57) {
//Is number
if((numberCount+1) > numberCountLimit) {
return false;
}
numberCount++;
} else {
//Is letter
if((letterCount+1) > letterCountLimit) {
return false;
}
letterCount++;
}
}
return true;
});
}
但是当我执行此代码时,我正在执行By by7 = By.xpath(".//*[@id='i2']/div[2]/div[1]");
WebDriverWait wait7 = new WebDriverWait(driver, 10);
WebElement elem7 = wait7.until(ExpectedConditions.elementToBeClickable(by7));
driver.findElement(By.xpath(".//*[@id='i2']/div[2]/div[1]")).click();
命令持续时间或超时:11毫秒
我如何通过此例外?
答案 0 :(得分:0)
等待可点击的元素与等待它可见是无关的。您可能需要确保拥有正确的元素,并且它应该/将变得可见。您可以改变wait.until()
以等待元素变为可见。
wait.until(ExpectedConditions.visibilityOfElementLocated(by7))
只是一个FYI ...您的最后一个声明,您可以使用从wait.until()
返回的元素并单击它。这样做:elem7.click();
我不知道这是否会解决您的问题,只是我注意到的效率。
因此更新的代码将是
By by7 = By.xpath(".//*[@id='i2']/div[2]/div[1]");
WebDriverWait wait7 = new WebDriverWait(driver, 10);
WebElement elem7 = wait7.until(ExpectedConditions.visibilityOfElementLocated(by7));
elem7.click();