2010-08-19 52 views
9

使用FirefoxDriver写测试时,FirefoxDriver:如何禁用javascript,css并使sendKeys类型立即生效?

我发现加载的页面真的很慢,因为JavaScript和css被执行。无论如何,禁用此?甚至可以将Noscript插件安装到配置文件中?

此外,sendKeys()实际上输出文本。但是,对于长文本来说这很慢,无论如何要立即在输入框中输入所有字符串?

+1

通过使整个字符串一次出现来颠覆WebDriver。 WebDriver被设计为模仿用户,用户不会奇迹般地使文本出现,他们将其输出。它可能需要稍长的时间,但它是一个真实的人的准确模拟。 – Ardesco 2012-02-07 14:11:52

+0

如果禁用JS,CSS,则整个页面可能会中断,因此Selenium WebDriver要执行的某些功能测试可能会中断。测试的目的是功能性而非性能。 – 2014-04-10 07:58:50

回答

17

可以在FirefoxProfile禁用javascript:

FirefoxProfile profile = new FirefoxProfile(); 
profile.setPreference("javascript.enabled", false); 
WebDriver driver = new FirefoxDriver(profile); 

我不认为有禁用CSS的方式,这不是你应该做的 - 这可能会破坏你的web应用程序,并禁用JavaScript可能做到这一点太。

无法直接设置文本字段的值 - WebDriver旨在模拟真正的用户“驾驶”浏览器 - 这就是为什么只有sendKeys。

但是,您可以通过JavaScript调用设置元素的值(如果您不会禁用它)。这对于长时间的测试速度更快,但是这不是用户交互所以有些验证可能不会被触发的仿真,所以请谨慎使用:

private void setValue(WebElement element, String value) { 
    ((JavascriptExecutor)driver).executeScript("arguments[0].value = arguments[1]", element, value); 
} 

,并使用它:

WebElement inputField = driver.findElement(By...); 
setValue(inputField, "The long long long long long long long text......"); 
0

而且您可以使用PhantomJS是没有用户界面的WebKit浏览器,因此它比FireFox或Chrome更快。 PhantomJS支持Web驱动程序。