2014-02-19 60 views
0

存在很多這樣的問題,但沒有什麼幫助? 我嘗試點擊「保存」按鈕,在我成功地將Selenium的值發送到表之前。 我試試這個代碼:Selenium WebDriver按下按鈕

river.findElement(By.xpath("//*[@id='field_0_9']")).click(); 

我這裏沒有例外,只是這行代碼什麼也不做。 另外我嘗試CSS選擇器:

driver.findElement(By.cssSelector("input[type='sybmit'][value='Save']")).click(); 

同樣的問題。 enter image description here

+1

當你錄製宏並嘗試點擊按鈕時,你會得到什麼代碼? – admdrew

+0

我沒有例外,沒有錯誤,如果你是這個意思。只是代碼沒有做預期的工作 –

+1

我在說 - 試着錄製一個宏,然後點擊按鈕,看看這個宏產生了什麼代碼。 – admdrew

回答

1

問題是保存按鈕嵌套在一個框架中。試試這個:

driver.switchTo().defaultContent(); 
driver.switchTo().frame(driver.findElement(By.xpath("//*[@id='frame_content']"))); 
driver.findElement(By.xpath("//input[@name='do_save_data']")).click(); 
1

從您的屏幕截圖我可以看到一個<frame>元素,所以我假設這個輸入是在幀內。點擊前需要切換到框架。

沒有看到你的<frame>元素的實際HTML,我只能給出以下建議:

driver.switchTo().defaultContent(); // make sure you are out of all frames 
driver.switchTo().frame(driver.findElement(By.cssSelector("frame"))); 

// continue do your stuff 
driver.findElement(By.cssSelector("input[type='sybmit'][value='Save']")).click(); 

如果情況是你已經在框架內,但你需要跳出。 (由於缺乏上下文,我無法確定您面臨的情況。)

driver.switchTo().defaultContent(); 

// continue do your stuff 
driver.findElement(By.cssSelector("input[type='sybmit'][value='Save']")).click();