2013-11-28 77 views
2

我使用Selenium WebDriver框架。我有一個方案,在文本框被填充和文本框的onblur後點擊一個按鈕。Escape鍵在Selenium WebDriver中無效Java

下面是我用於轉義序列的代碼,它在填充文本框後啓用按鈕。僅當文本框被填充以及焦點移出文本框時,纔會啓用按鈕。

WebDriver driver = new FirefoxDriver(); 
driver.get("http://localhost:8081/TestAutomation/Escape.jsp"); 
driver.manage().window().maximize(); 

WebElement txtBxHandle = driver.findElement(By.name("txtName"));   
txtBxHandle.sendKeys("Socrates"); 

Actions action = new Actions(driver); 
action.sendKeys(Keys.ESCAPE); 

WebElement BnEnable = driver.findElement(By.name("btnSubmit")); 
BnEnable.click(); 

上述代碼無法正常工作。我嘗試了keyPressNative,但徒勞無功。

感謝您的幫助。

回答

0

你可以嘗試改變

Actions action = new Actions(driver); 
action.sendKeys(Keys.ESCAPE); 

txtBxHandle.sendKeys(Keys.ESCAPE); 
+0

While將代碼嵌入我的自定義框架中我從Excel工作表中讀取輸入值。因此,我沒有參考以前的對象 –

7

根據我與Python綁定的經驗,你必須調用.perform()對你的行動鏈。我看到Java綁定有same method。所以:

action.sendKeys(Keys.ESCAPE).perform(); 
1

我有3個概念來做到這一點。

1)您可以專注於提交按鈕,通過使用JS Selenium WebDriver從文本框中失去焦點。代碼如下:

JavascriptExecutor jse = (JavascriptExecutor)driver; 
jse.executeScript("document.getElementsByName('btnSubmit')[0].focus();"); 

2)您可以使用操作類,如下:

Actions action = new Actions(driver); 
action.sendKeys(Keys.ESCAPE).build().perform(); 

3)你可以試試下面還有:

txtBxHandle.sendKeys(Keys.ESCAPE); 
0
import java.awt.Robot; 
import java.awt.event.KeyEvent; 

Robot robot = new Robot(); 
robot.keyPress(KeyEvent.VK_ESCAPE); 
robot.keyRelease(KeyEvent.VK_ESCAPE); 
+2

您能否更好地解釋您的解決方案? – Bandreid

+0

是的,您可以使用java.awt包中的Java Robot類 –

0

試這個

SendKeys.SendWait(「{ESC}」);

相關問題