Web驱动程序跳过特殊字符 - 使用sendkeys时的“(”和“&”字符

时间:2012-09-26 13:46:27

标签: java firefox selenium-webdriver

作为自动化测试的一部分,我需要在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);

1 个答案:

答案 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();