2013-10-18 74 views
0

我們已經有了一個新的頁面,我們正在實現自動化,並且一些使用bootstrap模板的功能會導致自動化的一些複雜性。使用Selenium Webdriver獲取元素的活動狀態?

傳統上有一個複選框或單選按鈕,我們使用一個標籤來識別它:

[FindsBy(How = How.CssSelector, Using = "body [autotag='prf_rd_1']")] 
     private IWebElement myElement; 

此時您可以使用element.isSelected在webdriver的代碼,看看它是否打勾。

然而,引導開發者已經改變了使用一個按鈕,或者是主動或不活動,如:

<button class="btn" autotag="prf_bt1" btn-radio="availabilityType.key" ng-model="model.availability.time" type="button"> … </button> 

<button class="btn **active**" autotag="prf_bt1" btn-radio="availabilityType.key" ng-model="model.availability.time" type="button"> … </button> 

(嗯,不知道如何高字活躍的代碼片段,如果任何人知道請隨時編輯)

所以,現在我們不能尋找'isSelected',因爲它不像複選框那樣工作。

有沒有人有代碼示例來確定一個按鈕是否在其CSS中沒有使用XPATH的活動類?目前我們會像上面那樣使用CssSelector,通過這種方式,元素可以移動,文本可以改變,但只要該自動標記仍然存在,就很好。但是,我不清楚我該如何做到這一點,並同時尋找其他CSS(類)來確定它是否處於活動狀態。

回答

2

如果我的理解正確,您只需要一個CSS選擇器,可以找到包含特定值的元素,在這種情況下,它的值爲class

這很簡單,一個複雜的方式做,這將是:

button[class*='active'] 

*=是一個屬性通配符,這可以讓你「其中A是介於該屬性的值內。」

具體來看爲button具有class包含active有一個auto-tag屬性被設置爲prf_bt1

button[class*='active'][auto-tag='prf_bt1'] 
+0

我實際上更喜歡'button [class〜='active']'稍微寬鬆一些。但更好 - 'button.active'':D' – sircapsalot

+0

是的,我可以做到這一點,如果我只是在尋找類,但在這種情況下,我正在尋找與cssselector autotag屬性,然後想知道是否它在課堂上也有一個活躍的標籤。這是我一直在努力的「一步」。 –

+0

@MarkMayo,我的編輯幫助嗎? – Arran

0

您可以使用這些方法來獲取元素的狀態,

getAttribute 
getCssValue 
isEnabled 

你可以在here得到有關這些方法的詳細信息。

+0

是的,我使用所有這些方法過去。然而,在這種情況下,我已經使用cssselector來查找具有autotag屬性的項目,然後想知道獲取的元素是否具有活動類。你能否詳細說明你將如何使用這些方法來實現這一點? –

相關問題