作为自动化测试的一部分,我需要在Web应用程序的文本框中键入带有特殊字符的字符串(“(PT books)”)。
当我运行测试时,总是跳过"("
。 ")"
没有问题。我开始调查它并尝试了所有要求shift key
被按下("~!@#$%^&*()_+{}|:<>?")
的特殊字符,并发现它总是跳过"("
和"&"
。我也在Google搜索框上尝试了相同的测试,在这种情况下,显示了所有字符。
我正在使用Selenium Web驱动程序(2.25.0)+ Java + Firefox(15.0.1)。我的firefox个人资料中也有setEnableNativeEvents
为false。
我也尝试使用Internet Explorer,它运行正常。我想坚持使用firefox,因为我的大部分测试都是在firefox上运行的。
关于为什么"("
和"&"
未显示在我正在测试的网络应用程序上的任何想法?
以下是我正在使用的代码
FirefoxProfile profile = new FirefoxProfile();
profile.setEnableNativeEvents( false);
WebDriver driver = new FirefoxDriver(profile);
String searchTerm = "~!@#$%^&*()_+{}|:<>?" ;
String Link = "http://" ;
driver.get( "http://www.google.com");
driver.findElement(By. id("gbqfq")).sendKeys(searchTerm);
driver.get(Link);
driver.findElement(By. id("ctl00_ctl00_FindField_FindField_ctl00_findFieldLinks_basic")).click();
driver.findElement(By. id(UIMapping.SearchBoxId)).sendKeys(searchTerm);
答案 0 :(得分:0)
我也面临同样的问题。我有一个简单的解决方法,这不是我正在寻找的那种解决方案,但时间有点帮助。如果有更好的处理方法,请建议。
driver = new FirefoxDriver();
String searchKey = "TShirt(M)";
driver.Navigate().GoToUrl("http://mywebsite.com/");
if (searchKey.Contains("(") || searchKey.Contains("&"))
{
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].value ='" + searchKey + "';", driver.FindElement(By.Id("search_text")));
}
else
{
driver.FindElement(By.Id("search_text")).SendKeys(searchKey);
}
driver.FindElement(By.Id("search_button")).Click();