我想在txtStockOnHand字段中输入一个值。但是,它总是抛出错误org.openqa.selenium.TimeoutException:等待元素可点击30秒后超时:By.id:txtStockOnHand甚至我等待元素可点击。
Selenium 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);
}
HTML代码:
答案 0 :(得分:0)
为解决这个问题,我使用Thread.sleep方法让整个线程暂停一段时间,然后在一段时间后再次运行。
我不知道为什么wait.until(visibility)和wait.until(clickable)无法正常运行。
我希望这有帮助。
// 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);
}
在你继续做其他事情之前把它放在任何地方。
您可以更改sleeptime中的值,也可以将其放在变量中:)
答案 1 :(得分:0)
如果Thread.sleep也不适合你,我想这是因为你页面中的几个元素具有相同的id,第一个元素被隐藏。即使id应该是唯一的,我也已经遇到过这样的情况。
你能检查一下你的元素的id是否真的独特吗?如果它不起作用,您可以共享您的HTML代码吗?