2011-11-17 68 views
0

任何人有一個自定義屬性找到網頁上的元素,像一個expando屬性有何建議?硒2.0和findBy - 自定義屬性或expando屬性

問題:網站使用很多JSP和按鈕動態圖像。他們沒有靜態名稱或ID。 (想想註冊或結賬過程,每個頁面有一個「下一個」或「繼續」按鈕,但它會動態地取決於當前上下文的某個地方)

建議的解決方案:我一再要求這些不能自動化最近已經用「btn-tag-title」的自定義expando屬性來回答。

如果頁面上的每一個元素都有一個唯一的(可定製)命名的BTN-標籤標題=屬性,可以硒2.0發現每次都可靠嗎?

其他建議的解決方法?

log.info(driver.getCurrentUrl()); 
    assertTrue(selenium.isElementPresent("btn-tag-title=Sign In")); 
    selenium.type("name=username", "demo"); 
    selenium.type("name=password", "tester"); 
    selenium.click("btn-tag-title=Sign In"); 
    log.info(driver.getCurrentUrl()); 

回答

0

當然。您可以在XPath或CSS定位器中引用該元素的任何屬性。例如:

assertTrue(selenium.isElementPresent("//*[@btn-tag-title='Sign In']")); 
... 
selenium.click("//*[@btn-tag-title='Sign In']"); 

assertTrue(selenium.isElementPresent("css=*[btn-tag-title='Sign In']")); 
... 
selenium.click("css=*[btn-tag-title='Sign In']"); 

對於它的價值,如果你的開發人員可以將自定義屬性與每一個有趣的元素有保證的,獨特的價值,你應該問他們爲什麼贏」請將該值放入id=屬性中。由於元素ID在HTML,DOM和Selenium中是特殊的,並且元素可以通過它們的ID比其他任何技術快得多。

+0

我已經在頁面上使用其他的CSS標識符試過,這些問題通常都有幾個相同類型的。但是,如果我可以通過自定義標籤找到這個特定的元素作爲css定位器,那麼它可能會解決問題。我會在星期一嘗試它,如果它運作良好,請回答這個問題。謝謝羅斯! –