2010-08-19 22 views
9

Trong khi sử dụng FirefoxDriver để viết kiểm tra,FirefoxDriver: cách tắt javascript, css và gửi loại sendKeys ngay lập tức?

Tôi phát hiện việc tải trang thực sự chậm do javascript và css đang được thực hiện. Có cách nào vô hiệu hóa thứ đó không ? thậm chí có thể cài đặt Noscript plugin vào hồ sơ?

Ngoài ra, sendKeys(), thực sự loại ra văn bản. Tuy nhiên, điều này là khá chậm cho văn bản dài, dù sao để ngay lập tức gõ tất cả các chuỗi int othe đầu vào hộp?

+1

Bạn đang lật đổ WebDriver bằng cách làm cho toàn bộ chuỗi xuất hiện cùng một lúc. WebDriver được thiết kế để mô phỏng một người dùng, một người sử dụng không làm cho văn bản xuất hiện một cách kỳ diệu, họ gõ nó ra. Nó có thể mất nhiều thời gian hơn nhưng nó là một mô phỏng chính xác của một người thực sự. – Ardesco

+0

Nếu bạn tắt JS, CSS, toàn bộ trang có thể bị hỏng để một số kiểm tra chức năng mà bạn sẽ thực thi bởi Selenium WebDriver có thể bị gián đoạn. Mục đích của thử nghiệm là Chức năng, không phải Hiệu suất. –

Trả lời

17

Bạn có thể vô hiệu hóa JavaScript trong FirefoxProfile:

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

Tôi không nghĩ rằng có một cách để vô hiệu hóa CSS và điều này không phải là điều bạn nên làm - điều này có thể phá vỡ các ứng dụng web của bạn, và vô hiệu hóa JavaScript có thể làm điều này quá.

Không có cách nào để đặt giá trị của trường văn bản trực tiếp - WebDriver được thiết kế để mô phỏng người dùng thực "thúc đẩy" trình duyệt - đó là lý do tại sao chỉ có sendKeys.

Tuy nhiên, bạn có thể đặt giá trị của phần tử thông qua cuộc gọi JavaScript (nếu bạn không vô hiệu hóa nó, tất nhiên). Đây là nhanh hơn cho kỳ thi này từ lâu, nhưng đây không phải là mô phỏng sự tương tác người sử dụng vì vậy một số kiểm chứng thực có thể không được kích hoạt, vì vậy sử dụng một cách thận trọng:

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

và sử dụng nó:

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

cũng bạn có thể sử dụng PhantomJS là trình duyệt WebKit không có Giao diện người dùng nên nó thực sự nhanh hơn FireFox hoặc Chrome. Có hỗ trợ trình điều khiển web cho PhantomJS.

Các vấn đề liên quan