2011-11-23 100 views
21

我對硒很新,所以我很抱歉,如果這是一個愚蠢的問題。 我已經成功了有線的IntelliJ(玩!框架)與硒,創造使用firefoxDrivers一些測試。如何檢查dom是否有使用WebDriver(Selenium 2)的類?

我想檢查頁面已被正確驗證。

長話短說,我選擇這樣一個元素:

WebElement smallDecel = firefoxDriver.findElement(By.cssSelector("#configTable tr:nth-child(2) td .playerDecelInput")); 

我做一些進一步的操作(明確更改數值,提交「形式」),然後我要檢查,如果輸入的TD被授予另一個班級。

所以,問題是 - 有一個簡單的技術,我可以使用,如果WebElement/DOM有一個類中指定查找?

回答

8

您可以使用FindElement(By.ClassName(//name of your class));我建議您循環並搜索DOM一段時間或設置Thread.sleep(xxxx),然後查找附加的類。

+0

硒可以採取等待的護理元素具有類名稱。參見[硒明確等待文檔(http://seleniumhq.org/docs/04_webdriver_advanced.jsp#explicit-waits) –

+0

+1 @朱利安的評論。另外問題是關於檢查他已經找到的元素的類。您的解決方案可能會找到具有相同類別的不同元素,而不一定是您已找到的元素。 –

25

一旦找到元素,你可以調用myElement.GetAttribute(「類」)。然後你可以解析返回的字符串,看看它是否包含你關心的類名。

27

要擴大山姆·伍茲的回答,我用一個簡單的擴展方法(這是C#)來測試一個元素是否有指定的類:

public static bool HasClass(this IWebElement el, string className) { 
    return el.GetAttribute("class").Split(' ').Contains(className); 
} 
+0

只是一個快速編輯,它應該是'.split(「‘)'和'不.Split(’‘)' – avk

+3

他的答案是正確的,是.Split(’」),因爲這是C#,也考慮到您需要在使用指令中包含System.Linq以使.Contains正常工作。 – euther

相關問題