Thực hiện nhấp qua JavaScript có một số hành vi bạn cần biết. Ví dụ: nếu mã được liên kết với sự kiện onclick
của phần tử của bạn gọi số window.alert()
, bạn có thể thấy mã Selenium của mình treo, tùy thuộc vào việc triển khai trình điều khiển trình duyệt. Điều đó nói rằng, bạn có thể sử dụng lớp JavascriptExecutor
để làm điều này. Giải pháp của tôi khác với những người khác được đề xuất, tuy nhiên, trong đó bạn vẫn có thể sử dụng các phương pháp WebDriver để định vị các phần tử.
// Assume driver is a valid WebDriver instance that
// has been properly instantiated elsewhere.
WebElement element = driver.findElement(By.id("gbqfd"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
Bạn cũng nên lưu ý rằng bạn có thể được tốt hơn bằng cách sử dụng phương pháp click()
của giao diện WebElement
, nhưng disabling native events trước instantiating lái xe của bạn. Điều này sẽ hoàn thành cùng một mục tiêu (với cùng các giới hạn tiềm năng), nhưng không bắt buộc bạn viết và duy trì JavaScript của riêng bạn.
Tôi không nhận được nó - bạn muốn '.click() 'để bắn javascript chức năng binded đến đó nút? Hoặc bạn có cần một cái gì đó như http://code.google.com/p/selenium/wiki/FrequentlyAskedQuestions#Q:_How_do_I_execute_Javascript_directly? – WTK