我试图输入一个值在txtStockOn手字段.但是,它总是抛出一个错误org. openqa.selenium.TimeoutException:超时后30秒等待元素可点击:By.id:txtStockOnHand-即使我等待元素可点击。
硒Java代码:
@FindBy(how = How.ID, using = "txtStockOnHand")
static WebElement txtStockOnHand;
public void waitForClickable(String strElementID){
wait.until(ExpectedConditions.elementToBeClickable(By. id(strElementID)));
}
// Set SOH in SOH textbox
public void setStockOnHand(String strStockOnHand){
txtStockOnHand.sendKeys(strStockOnHand);
}
public void enterStockOnHand(String strStockOnHand){
this.waitForClickable("txtStockOnHand");
this.setStockOnHand(strStockOnHand);
txtStockOnHand.sendKeys(Keys.TAB);
}
超文本标记语言代码:
为了解决这个问题,我使用Thread.睡眠方法使整个线程停止一段时间,然后在一段时间后再次继续。
我不知道为什么等。直到(可见性)和等待。直到(可点击)不起作用。
我希望这能有所帮助。
// Set SOH in SOH textbox
public void setStockOnHand(String strStockOnHand){
try {Thread.sleep(3000);} //3000 for 3 second because it is in millisecond format
catch (InterruptedException e) {e.printStackTrace();}
txtStockOnHand.sendKeys(strStockOnHand);
}
在你继续做别的事情之前,把它放在任何地方。
您可以更改睡眠时间的值,也可以将其放在变量中:)
如果Thread.睡眠也不适合你,我想这是因为你页面中的几个元素有相同的id,第一个元素被隐藏了。即使id应该是唯一的,我也已经遇到过这样的情况。
你能检查你的元素的id是否真的是唯一的吗?