2013-04-10 28 views
0

我需要選中一個複選框以將值輸入到輸入字段。刷新一個複選框,Selenium 2

該字段出現在我檢查框時。所以我嘗試:

WebElement box = driver.findElement(By.id("Checkbox_input")); 
box.click(); 
sleep(5); 
// the input can't be detected 
// so it throw a noSuchElement. 
WebElement input = driver.findElement(By.id("PaymentAmount_input")); 
input.sendKeys("12345"); 

我已經使用isSelected()(在click()之後),如果它檢查以驗證。

Assert.assertTrue(box.isSelected()); 

我發現一些奇怪的作品。我寫的是ePrepayment.click()後;

box.submit(); 

它的工作原理,因爲submit()看起來像一個刷新,所以出現在我的輸入,但它並沒有在其他輸入刪除所有值。

規格

sleep()方法

protected void sleep(int i) { 
    driver.manage().timeouts().implicitlyWait(i, TimeUnit.SECONDS); 
} 

問:

有沒有更好的辦法來做到這一點,而不是在一個複選框討厭submit()

謝謝,Marco

回答

0

如果可能,分享元素HTML。可能有類似onsubmit的顯示輸入字段而不是onclick事件。

0

您的sleep()方法沒有意義,因爲這是隱式等待的不正確使用。更正確的方法是使用顯式等待:

WebElement box = driver.findElement(By.id("Checkbox_input")); 
box.click(); 
wait.until(ExpectedConditions.visibilityOfElemementLocated(By.id("PaymentAmount_input"))); 
WebElement input = driver.findElement(By.id("PaymentAmount_input")); 
input.sendKeys("12345"); 

假設wait已經正確的地方開始想:

WebDriverWait wait = new WebDriverWait(driver, 5); 
+0

我不能定義'wait'像你這樣和[硒(HTTP ://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp)。它說:「構造函數WebDriverWait(WebDriver,int)是未定義的」*,它說我需要將它寫成如下形式:'新的WebDriverWait(Object,WebDriver,long);' **我的壞,我導入錯包。我會嘗試像你說的,我反彈你。** – e1che 2013-04-11 10:14:48

+0

我開始閱讀評論,並打算提及它可能與進口有關,只要你得到一個狀態讓我知道。 – aimbire 2013-04-11 12:31:19