3

我使用 selenium webdriver 2.33.0 并且我需要在数据中发送带有以下字符的数据("(", "#")

当我们尝试使用 sendkeys 发送这些字符时

"WebElement dat = driver.findElement(By.xpath("xpathexpression);
dat.sendkeys("select * from (?s, ?p, ?o)");

select * from ?s, ?p, ?o) 由于缺少左括号,以下数据将显示在文本区域中。我也使用了 selenium 动作类 sendkeys 和机器人 sendkeys。

我无法解决问题。有人可以帮我吗?

4

4 回答 4

1

使用操作类时问题已解决

WebElement dat = driver.findElement(By.xpath("xpathexpression"); 
dat.click(); 
Actions data = new Actions(driver);
data.sendKeys(Keys.chord(Keys.CONTROL,"a"),Keys.DELETE);
data.perform();
query = query.replaceAll("\\(", Keys.chord(Keys.SHIFT,"9")); 
query = query.replaceAll("\\#", Keys.chord(Keys.SHIFT,"3")); 
query = query.replaceAll("\\-", Keys.SUBTRACT.toString()); 
query = query.replaceAll("\\}", Keys.chord(Keys.SHIFT,"]")); 
data.sendKeys(query); 
data.perform();
于 2014-01-30T09:22:44.230 回答
1

丑陋但有效的解决方法:按照 user2935099 的建议,(用 key sequence替换左括号。shift + 9

dat.sendKeys(Keys.chord(Keys.SHIFT, "9"));

有趣的是,无论您当前的键盘布局如何,这似乎都有效(我使用带有法语布局的爱尔兰语言环境)。


我偶然发现了这个版本为 2.40.0,这绝对是 Selenium 中的一个错误。在 Firefox JavaScript 控制台中使用以下内容可以完美运行:

 var box = getElementById('SearchBox');
 box.setValue('AB (CDE FGH)');
于 2014-03-16T14:35:44.790 回答
0

同样的问题,使用2.40.0我的workaorund正在使用剪贴板,不是很漂亮,但测试系统对剪贴板没有太多用处......

public static void setTextByClipboard(WebElement element, String text) {
    StringSelection selection = new StringSelection(text);
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(selection, selection);
    element.sendKeys(Keys.chord(Keys.CONTROL, "v"));
}
于 2014-03-11T18:35:40.543 回答
0

我尝试使用我的 selenium 设置输入相同的内容,它在firefoxchrome. 我不太确定原因,但我注意到您目前使用的是非常旧的 selenium 版本(2.33.02.37.0是可用的。可能您应该尝试更新 selenium 并且 t 应该按预期工作。

于 2013-10-31T11:36:12.660 回答