Tôi đã đập đầu vào tường cố gắng chọn một tùy chọn từ ajax cho phép select2 chọn danh sách với trình điều khiển web selenium. Tôi đã quản lý để làm cho nó làm việc với trình duyệt web IE nhưng không phải firefox. Đây là giải pháp hacky tôi cho IEXử lý Select2 với trình điều khiển web Selenium
public static void SetSelect2Option(this IWebDriver driver, By locator, string subContainerClass, string searchTerm, TimeSpan? ajaxWaitTimeSpan = null)
{
var select2Product = driver.FindElement(locator);
select2Product.Click();
var searchBox = driver.FindElement(By.CssSelector(subContainerClass + " .select2-input"));
searchBox.SendKeys(searchTerm);
if (ajaxWaitTimeSpan != null)
{
driver.Manage().Timeouts().ImplicitlyWait(ajaxWaitTimeSpan.Value);
}
var selectedItem = driver.FindElements(By.CssSelector(subContainerClass + " .select2-results li")).First();
selectedItem.Click();
selectedItem.SendKeys(Keys.Enter);
}
Trong Firefox, giải pháp này làm việc cho đến khi điểm của SendKeys gọi nơi nó chỉ bị treo và di chuyển sang bước tiếp theo mà không thực sự bắn kiện Select2 để cư mục đã chọn.
Tôi cũng đã mệt mỏi khi sử dụng số http://code.google.com/p/selenium/wiki/AdvancedUserInteractions api với kết quả tương tự.
Có ai gặp phải vấn đề tương tự trước đây không?
FWIW, tôi đã phải sử dụng 'ClickAt' 5,5 thay vì nhấp chuột để làm việc này. – Daniel
@Daniel: Nhiều khả năng bạn có các yếu tố khác chồng lên nhau. Phiên bản nào? Trình duyệt nào? –
Đây là trong Selenium 2.4.0 trong FF. Tôi đang sử dụng IDE, nhưng sẽ mong đợi hành vi tương tự. Tôi mới sử dụng Selenium, nhưng không thể tưởng tượng điều gì sẽ gây ra nhấp chuột không hoạt động, khi clickAt thực hiện. Hành vi với nhấp chuột là menu thả xuống select2 không xuất hiện. Câu trả lời của bạn rất hữu ích trong việc đưa tôi đến các phần tử phù hợp ... – Daniel