Vì vậy, trong các thử nghiệm hồi quy selen của tôi, tôi đã cố gắng nhấp đúp vào lịch để tạo một appt mới. Tôi đã cố gắng sử dụng doubleClick(); trong thư viện advanceduserinteractions, nhưng có một vấn đề; hai lần nhấp không đủ nhanh/đủ gần nhau để kích hoạt nhấp đúp thực tế! Có ai tìm thấy một cách để đối phó với điều này trong thử nghiệm của họ?Selenium 2.0 Tương tác nâng cao WebDriver Trợ giúp DoubleClick (C#)
Trả lời
Mã này phù hợp với tôi!
Actions action = new Actions(driver);
action.doubleClick(myElemment);
action.perform();
Tôi đã thử điều đó, nhưng phương thức Actions doubleClick() không kích hoạt cả hai lần nhấp đủ nhanh để đăng ký làm nhấp đúp vì một lý do nào đó .. – spacebed
Vâng, tôi đã cập nhật lên bản dựng hiện tại của Selenium và (không có thay đổi về mã Bây giờ nó bắn đủ nhanh haha. Tôi sẽ đánh dấu đây là giải pháp mặc dù, như tôi nghĩ rằng các trình điều khiển hành động là cách đơn giản nhất/hiệu quả nhất để đi. – spacebed
bạn đã thử bắt IWebElement rồi nhấp vào hai lần chưa?
IWebElement element = driver.FindElement(By.Id("yourID"));
element.Click();
element.Click();
Tôi không biết điều này có cung cấp cho bạn chức năng hay không nhưng tôi biết rằng khi tôi thực hiện một sự kiện nhấp như sự kiện ở trên nó chạy gần như nhấp đúp từ người dùng thực tế.
Tùy chọn khác là để tham chiếu ThoughtWorks.Selenium.Core
, tuy nhiên nhược điểm duy nhất của điều này là tôi không chắc chắn nó hoạt động tốt với IWebDriver
hiện tại Tôi nghĩ rằng nó cần sự khởi tạo riêng của nó là IWebDriver
.
Đáng buồn là điều này không hiệu quả. Tôi đã thử điều này trước AdvancedUserInteractions, nhưng dường như không thực sự thực hiện Double Click. – spacebed
Đây là tương đương Java. Mã này sẽ mở một cách mù quáng sự kiện đầu tiên. Bạn có thể thêm một số logic để mở một sự kiện cụ thể, vv Mã này hoạt động! (được thử nghiệm với 2.12)
List<WebElement> events = driver.findElements(By.cssSelector("div.dv-appointment"));
for(WebElement event:events){
WebElement body = event.findElement(By.cssSelector("div.body"));
if(!body.getText().isEmpty()) //or open a known event
{
System.out.println(body.getText()); //open the first event
Actions builder = new Actions(driver);
Action doubleClick = builder.doubleClick(event)
.build();
doubleClick.perform();
break;
}
}
Đừng quên "sử dụng"
using OpenQA.Selenium;
using OpenQA.Selenium.Interactions;
using OpenQA.Selenium.Interactions.Internal;
using OpenQA.Selenium.Support.UI;
//create Actions object
Actions builder = new Actions(driver);
//create a chain of actions
builder.DoubleClick().Build().Perform();
http://selenium-interview-questions.blogspot.ru/2014/03/how-to-double-click-on-web-element.html
tôi cũng đã có vấn đề nơi sự kiện DoubleClick Selenium của hoạt động trong Firefox nhưng không có tác dụng trong Chrome. Nâng cấp lên Selenium không giúp được gì; Tôi đã có phiên bản mới nhất. (Môi trường của tôi là Ubuntu 14.04, Python 2.7.6, Selenium 2.44.0, Firefox 35.0, Chrome 40.0.2214.91.)
Tôi không chắc tại sao câu trả lời của CBRRacer bị giảm giá. Tôi đã làm việc thành công xung quanh vấn đề bằng cách sử dụng hai sự kiện nhấp chuột. Điều này làm việc trong cả Firefox và Chrome. Có hai cách để làm điều đó, và cả hai đều làm việc cho tôi.
Cách thứ nhất:
elem = driver.find_element_by_css_selector('#myElement')
elem.click()
elem.click()
Cách thứ hai:
elem = driver.find_element_by_css_selector('#myElement')
actions = webdriver.ActionChains(driver)
actions.click(elem).click(elem).perform()
Tôi rất thích cách tiếp cận sử dụng ở đây, đặc biệt là xếp hàng những hành động đầu tiên, sau đó thực hiện, vì đó cho phép ứng dụng lặp đi lặp lại của actionchain.
Từ ví dụ tài liệu liên quan:
menu = driver.find_element_by_css_selector(".nav")
hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")
actions = ActionChains(driver)
actions.move_to_element(menu)
actions.click(hidden_submenu)
actions.perform()
- 1. Selenium WebDriver + Firefox 7.0.1 không tương thích
- 2. Selenium Webdriver Hỗ trợ cho JavaFX 2.0 Webkit hoặc QT5 Webkit (Mục tiêu: webkit không đầu)
- 3. Selenium C# Webdriver FindElements (By.LinkText) RegEx?
- 4. tương đương của isTextPresent trong Selenium 1 (Selenium RC) trong Selenium 2 (WebDriver)
- 5. Phiên bản Firefox được hỗ trợ bởi selenium webdriver 2.25.0
- 6. selenium webdriver chọn phần tử
- 7. Làm cách nào để đặt tùy chọn được chọn bằng ứng dụng Selenium WebDriver (selenium 2.0) trong ruby
- 8. Selenium Webdriver cài đặt từ xa
- 9. C# nâng cao sự kiện
- 10. Trợ giúp Regex với thao tác chuỗi
- 11. Selenium WebDriver và DropDown Boxes
- 12. setSpeed trong Selenium WebDriver sử dụng Ruby
- 13. selenium webdriver window handles C# switchTo thất bại
- 14. Nhận mã trạng thái HTTP bằng Selenium WebDriver C#
- 15. C#/ASP.NET Selenium WebDriver - Tái sử dụng Cookies
- 16. selenium webdriver: cách xử lý javascript onclick trong C#
- 17. Selenium WebDriver C# find phần tử bằng con đường href
- 18. Danh sách các mục trong Selenium WebDriver sử dụng C#
- 19. Trợ giúp nâng cấp Perl & CPAN cho OS X
- 20. Selenium WebDriver: Cách đợi iFrames tải hoàn toàn?
- 21. Python Selenium WebDriver kéo và thả
- 22. Selenium 2.0 WebDriver IE8 tìm kiếm bởi xpath không thể được đánh giá
- 23. Selenium WebDriver hoạt động nhưng SLOW (Java)
- 24. C# Selenium WebDriver Cấu hình FireFox - sử dụng proxy có xác thực
- 25. Hướng tương lai của Định dạng tệp trợ giúp
- 26. Đối sánh chuỗi() có được hỗ trợ trong Selenium Webdriver 2 không?
- 27. trợ giúp với tệp kiến - classpath cho tác vụ Java
- 28. Selenium C# Webdriver Cách phát hiện xem phần tử có hiển thị hay không
- 29. Nhà máy-mô hình cho Selenium webdriver
- 30. WebRat + Selenium WebDriver: chờ ajax hoàn thành
cũng, lịch Tôi đang sử dụng các chức năng như thế này một: [link] (http: //google.latest.gwt- web-calendar.appspot.com) – spacebed
Rất tiếc, liên kết không cho phép nhấp đúp vào lịch trống để tạo cuộc hẹn mới. Tuy nhiên tôi đã có thể bấm đúp vào một lịch hiện có và mở nó thành công. Tôi đã sử dụng API hành động mặc dù trong Java. Không chắc chắn nếu đó là một cái gì đó bạn đang tìm kiếm.Tôi có thể gửi mã nếu bạn quan tâm – nilesh
Bạn nói đúng, nhưng ngay cả để mô phỏng nhấp đúp vào một đã đăng ký thậm chí không làm việc cho ứng dụng thực tế của tôi. Tôi quan tâm đến mã mặc dù, vì nó có thể giúp tôi tìm ra C# equivelent. – spacebed