簡體   English   中英

轉義鍵在帶有 Java 的 Selenium WebDriver 中不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM