Làm cách nào tôi có thể thực hiện một nhấp chuột selen() hoạt động giống như một cú click chuột thủ công?Thử nghiệm Selenium của GWT 2.0
Gần đây tôi đã nâng cấp GWT từ 1.7.1 lên 2.0. Một số thử nghiệm selen (SeleniumRC v1.0.1, IE7) hiện đang thất bại. Dường như phương thức Selenium.click() không chọn GWT TreeItem. Một nhấp chuột thủ công sẽ làm cho TreeItem chuyển sang màu xanh dương (ví dụ: nhìn được chọn và có thuộc tính lớp "gwt-TreeItem-selected" trong DOM), nhưng kiểm tra selen không.
Tôi tin rằng selenium thực sự đang tìm đúng yếu tố, chỉ cần không nhấp vào nó. Nếu bạn thay đổi tham số chuỗi trong phương thức nhấp, bạn có thể kiểm tra xem selen có ném ra ngoại lệ khi không tìm thấy phần tử đó hay không.
Mã mẫu bên dưới sử dụng trang web Trình diễn GWT. Nó cố bấm vào từ "Beethoven". Nếu bạn bấm vào từ đó bằng chuột, bạn sẽ thấy TreeItem chuyển sang màu xanh lam. Tuy nhiên khi bạn chạy thử nghiệm selen, nó sẽ không.
package test;
import org.junit.Before;
import org.junit.Test;
import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.Selenium;
public class TestTreeClick {
static Selenium selenium = null;
@Before
public void setUp() throws Exception {
if (selenium == null) {
selenium = new DefaultSelenium("localhost", 4444, "*iexplore",
"http://gwt.google.com/samples/Showcase/Showcase.html#CwTree");
selenium.start();
}
}
@Test
public void testingClicking() {
selenium.open("http://gwt.google.com/samples/Showcase/Showcase.html#CwTree");
selenium.click("gwt-debug-cwTree-staticTree-root-child0-content");
}
}
Tôi đã thử một số phương pháp khác (Selenium.clickAt(), Selenium.fireEvent(), Selenium.mouseOver()/Xuống()/Up()) - nhưng không ai tái tạo các hành vi bằng tay.
Chức năng selen mà thực sự bắn các sự kiện nhấp chuột là triggerMouseEvent trong selen-core/src/main/nguồn/lõi/scripts/selen-browserbot.js. Hầu hết các mã đang tạo ra một đối tượng sự kiện, và sau đó nó gọi là element.dispatchEvent (sự kiện). – John