提问者:小点点

即使我等待元素可点击30秒,元素也无法点击


我试图输入一个值在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);
}

超文本标记语言代码:


共2个答案

匿名用户

为了解决这个问题,我使用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是否真的是唯一的吗?