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

时间:2016-11-11 00:39:41

标签: java selenium

我想在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代码:

2 个答案:

答案 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中的值,也可以将其放在变量中:)

HappyCoding

答案 1 :(得分:0)

如果Thread.sleep也不适合你,我想这是因为你页面中的几个元素具有相同的id,第一个元素被隐藏。即使id应该是唯一的,我也已经遇到过这样的情况。
你能检查一下你的元素的id是否真的独特吗?如果它不起作用,您可以共享您的HTML代码吗?