2011-11-23 5 views
9

Selenium WebDriver'ı kullanıyorum ve bir sorunla karşılaşıyorum.Selenium WebDriver Eylemleri Nasıl Hata Ayıklanır?

Kullanıcı Arabirimi'nde, Web Gezgini tarafından öğeler görülür, ancak tıklama, yazım, seçim gibi eylemler gerçekleştirilemez. Öğeler, selenyum tarafından bulunur ve webelement örneği olarak döndürülür. GetText(), isEnabled() vb. Alabilirim, ancak herhangi bir eylemi gerçekleştiremiyorum. İstisna yoktur. Sadece kilitleniyor.

Bu davranışı anlamadım. WebDriver tarafından görülüyorsa, tıklamalıdır. Eylemleri denedim. Bu da aynı davranışı gösterir.

Bu sorun nasıl hata ayıklanır? Herhangi bir fikir?

cevap

2

Kodda hata ayıklamanın bir yolu, WebDriverEventListener'ın etrafına sarıcı yazmak ve günlükleri dinlemek. Diğer bilge, bu mümkün değil.

+0

Bunun için kodunuz var mı? Sarıcıyla ve Selenium 2 WebDriver'da günlükleri nasıl ayarlayacağımı çok merak ediyorum. – MacGyver

+1

@MacGyver, webdriver 2.15.0'dan itibaren, günlüğe kaydetme başlatıldı. Yani, bunun için kod yazılmasına gerek olmadığını düşünüyorum. Hatta günlük seviyesini ayarlayabilirsiniz. En son sürümü dene. – Rajasankar

+0

Bu sarıcı kullanmadan Visual Studio'da nasıl yapılacağını anladım. Daha fazla bilgi için cevabımı görün. – MacGyver

4

Küçük hatırlatıcı: WebDriver sayfadaki CSS tarafından "gizli" olan öğeleri bulabilir.

Bu öğeler bulunur, ancak tıklanamaz (veya başka bir eylem).

Yöntem çağrılmaya çalışılır.

0

Nunit ve C# istemci sürücüleri kullanıyorsanız, Araçlar> İşlemeye Ekleme> "nunit-agent.exe"> Ekle'yi seçerek, nunit-agent.exe işleminize Visual Studio'yu ekleyebilirsiniz.

JUnit ve Java istemci sürücülerini Eclipse'deki nunit-agent.exe işlemine ekleyerek aynı işlemi yapabilirsiniz.

=========== Sen JavaScript görmek için sizin sürücü için üzerinde yerli olayları açmak gerekebilir

1.)

diğer sorulara cevap verebilmek için ... olaylar.

2.) Ayrıca, Get/Setting değerleri için WebDriver'a sahip bazı yazılım hataları buldum. Sorunuzda açıkladığınız InnerHtml (aka getText) kapmak için bunları deneyin. Bu .NET 4.0 kodudur .. bu yüzden uygun şekilde değiştirmeniz gerekebilir. Bunlar benim Element sınıfımdadır, dolayısıyla iç içe elemandaki "Element" öneki çağırır.

public static int GetInnerHtmlByXPathTypeInt(IWebDriver driver, string xpath) 
{ 
    return int.Parse(Element.GetInnerHtmlByXpath(driver, xpath)); 
} 
public static double GetInnerHtmlWithoutDollarSignByXPath(IWebDriver driver, string xpath) 
{ 
    return double.Parse(Element.GetInnerHtmlByXpath(driver, xpath).Replace("$", string.Empty)); 
} 

public static string GetValueByXPath(IWebDriver driver, string xpath) 
{ 
    return driver.FindElement(By.XPath(xpath)).GetAttribute("value"); 
} 

public static string GetInnerHtmlByXpath(IWebDriver driver, string xpath) 
{ 
    return driver.FindElement(By.XPath(xpath)).Text; 
}