Selenyum regresyon testlerimde yeni bir uygulama yapmak için takvime çift tıklamaya çalışıyorum. DoubleClick() işlevini kullanmaya çalıştım; advanceduserinteractions kitaplığı içinde yöntem, ancak bir sorun var; İki tıklama, gerçek bir çift tıklama için yeterince hızlı/yakın yeterli değildir! Hiç kimse testlerinde bununla başa çıkmanın bir yolunu buldu mu?Selenium 2.0 WebDriver Onaylanmış Etkileşimler DoubleClick Yardımı (C#)
cevap
Bu kod benim için çalışıyor!
Actions action = new Actions(driver);
action.doubleClick(myElemment);
action.perform();
Bunu denedim, ancak Actions doubleClick() yöntemi, herhangi bir nedenle bir çift tıklama olarak kaydetmek için yeterince hızlı her iki tıklama da ateşlemiyor .. – spacebed
Ben, geçerli Selenium yapı ve (hiçbir kod değişiklikleri ile güncellendi)) şimdi yeterince hızlı ateş ediyor haha. Bunu bir çözüm olarak işaretleyeceğim, çünkü Eylemler'in sürücünün gitmek için en basit/en etkili yol olduğunu düşünüyorum. – spacebed
IWebElement'i yakalamayı ve sonra iki kez tıklamayı denediniz mi? Bu size desird işlevselliği ya da değil verecekti ama ben çalıştırdığınızda üstündeki gibi bir tıklama etkinlik gerçek bir kullanıcı bir çift tıklama kadar yakın çalıştığını biliyorsanız bilmiyorum
IWebElement element = driver.FindElement(By.Id("yourID"));
element.Click();
element.Click();
.
Diğer seçenek ancak bu sadece olumsuz ben buna IWebDriver
kendi instantiation var gerektiğini düşünüyorum o anki IWebDriver
ile iyi oynar emin değilim yani, ThoughtWorks.Selenium.Core
referans etmektir.
Ne yazık ki bu işe yaramıyor. Bunu AdvancedUserInteractions'tan önce denedim, ancak aslında DoubleClick'i gerçekleştirmiyor gibi görünüyor. – spacebed
İşte Java eşdeğeri. Bu kod ilk olayı körü körüne açacak. Belirli bir olayı açmak için biraz mantık ekleyebilirsiniz. Bu kod çalışıyor! (2.12 ile test edilmiştir).
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;
}
}
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
Ben de selenyum en doubleclick olay Firefox'ta çalışıyor ancak Chrome'da herhangi bir etkisi yoktur sorun vardı "kullanarak" unutmayın. Selenyum'a yükseltmek yardımcı olmadı; Zaten en son sürüme sahibim. (Ortamım Ubuntu 14.04, Python 2.7.6, Selenium 2.44.0, Firefox 35.0, Chrome 40.0.2214.91.)
CBRRacer'in yanıtının neden reddedildiğinden emin değilim. İki tıklama olayını kullanarak problemi başarılı bir şekilde çözdüm. Bu, hem Firefox'ta hem de Chrome'da çalışır. Bunun iki yolu var ve ikisi de benim için çalıştı.
ilk yolu:
elem = driver.find_element_by_css_selector('#myElement')
elem.click()
elem.click()
İkinci yol:
elem = driver.find_element_by_css_selector('#myElement')
actions = webdriver.ActionChains(driver)
actions.click(elem).click(elem).perform()
Oldukça o tekrar tekrar uygulanmasına olanak verir çünkü özellikle performans, sonra ilk eylemleri kuyruk, burada kullanılan yaklaşım gibi actionchain. bağlantılı dokümantasyon örnekten
: Ayrıcamenu = 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()
, ben bu gibi fonksiyonları kullanıyorum takvim biri: [link] (http: //google.latest.gwt- web-calendar.appspot.com) – spacebed
Maalesef, bağlantı yeni bir randevu oluşturmak için boş bir takvime çift tıklamaya izin vermiyor. Ancak mevcut bir takvime çift tıkladım ve başarıyla açabildim. Java'da Actions API'yi de kullandım. Aradığın bir şey olup olmadığından emin değilim.Eğer ilgileniyorsanız kodu gönderebilirim – nilesh
Haklısınız, ama zaten kayıtlı bir çift tıklama bile simüle etmek için benim gerçek uygulama için çalışmıyor. Yine de kodla ilgileniyorum, çünkü C# denkliği öğrenmeme yardımcı olabilir. – spacebed