我正在使用Selenium WebDriver框架。我有一个场景,在填充文本框和文本框的onblur之后点击一个按钮。
下面是我用于转义序列的代码,它在填充文本框后启用按钮。只有当文本框被填充并且焦点移出文本框时才会启用按钮。
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 :(得分:11)
根据我对Python绑定的经验,您必须在操作链上调用.perform()
。我看到Java绑定有same method。所以:
action.sendKeys(Keys.ESCAPE).perform();
答案 1 :(得分:4)
我有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);
答案 2 :(得分:1)
您可以使用以下代码段进行转义,而无需在网页上查找/定义任何元素
WebElement currentElement = driver.switchTo().activeElement();
currentElement().sendKeys(Keys.ESCAPE);
如果您正在使用 Serenity 并愿意逃避,请使用以下代码段
withAction().sendKeys(Keys.TAB).perform();
答案 3 :(得分:0)
您可以尝试更改
Actions action = new Actions(driver);
action.sendKeys(Keys.ESCAPE);
到
txtBxHandle.sendKeys(Keys.ESCAPE);
答案 4 :(得分:0)
import java.awt.Robot;
import java.awt.event.KeyEvent;
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ESCAPE);
robot.keyRelease(KeyEvent.VK_ESCAPE);
答案 5 :(得分:0)
试试这个
SendKeys.SendWait("{ESC}");