![](/img/trans.png)
[英]Pressing Escape does not function in Selenium WebDriver using Java
[英]Escape key is not working in Selenium WebDriver with Java
我正在使用 Selenium WebDriver 框架。 我有一個場景,在文本框填充和文本框模糊后單擊按鈕。
下面是我用於轉義序列的代碼,它在填充文本框后啟用按鈕。只有當文本框被填充並且焦點移出文本框時,按鈕才會啟用。
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 但沒有成功。
感謝您的幫助。
根據我在 Python 綁定方面的經驗,您必須在操作鏈上調用.perform()
。 我看到 Java 綁定具有相同的方法。 所以:
action.sendKeys(Keys.ESCAPE).perform();
我有 3 個概念來做到這一點。
1) 您可以通過將 JS 與 Selenium WebDriver 結合使用,專注於提交按鈕以從文本框中失去焦點。 代碼如下:
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("document.getElementsByName('btnSubmit')[0].focus();");
2) 您可以使用 Actions 類,如下所示:
Actions action = new Actions(driver);
action.sendKeys(Keys.ESCAPE).build().perform();
3)您也可以嘗試以下方法:
txtBxHandle.sendKeys(Keys.ESCAPE);
import java.awt.Robot;
import java.awt.event.KeyEvent;
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ESCAPE);
robot.keyRelease(KeyEvent.VK_ESCAPE);
您可以使用以下代碼段進行轉義,而無需在網頁上查找/定義任何元素
WebElement currentElement = driver.switchTo().activeElement();
currentElement().sendKeys(Keys.ESCAPE);
如果您正在使用 Serenity 並願意逃避,請使用以下代碼段
withAction().sendKeys(Keys.TAB).perform();
你可以嘗試改變
Actions action = new Actions(driver);
action.sendKeys(Keys.ESCAPE);
到
txtBxHandle.sendKeys(Keys.ESCAPE);
試試這個
SendKeys.SendWait("{ESC}");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.