2017-07-10 78 views
0

我有一個頁面,我正在用C#中的selenium webdriver進行測試。我正在測試的頁面是asp.net,並使用GridView。在網格中,我需要通過partial id(CSS Selector)找到一個標籤(span),因爲它可以位於網格中的任何位置(因此可以更改其ID),但也可以通過文本查找,因爲不會有一個以上的記錄包含該單詞「打開」,但其餘部分將包含「關閉」一詞。我需要包含一個部分ID,因爲「打開」可能會出現在span標籤中頁面的其他任何地方。當然,網格中出現的「打開」行將更改其ID。通過部分ID和文本查找元素?

例如:

RecordID SomeData Status 
1   Something1 Closed 
2   Something2 Open //find this row's status label 
2   Something3 Closed 

到目前爲止,我已經受夠了這種

driver.FindElements(By.XPath("//span[contains(text(),'Open')]")) 

但是輕度的成功,我並不想僅僅依靠文字,因爲,例如,有可能未來的幫助部分或「SomeData」列可能包含任何內容,包括「打開」

那麼我怎樣才能通過css選擇器FindElement部分ID和包含文本「打開」?

回答

1

CSS選擇器將找不到包含文本,只有XPath會這樣做。您可以使用下面的XPath,

//span[contains(@id,'somePartialId')][.='Open'] 

您沒有指定要查找的部分ID,因此您必須自己填寫。我將更改爲包含文本的等值,因爲您比更有可能找到比您討價還價更多的內容。如果是包含文本的全部內容,我建議您始終使用「等於」,如果是部分文本,則只能使用。

+0

就是這樣。正是我在找什麼。謝謝。並指出「包含」。 – MetalPhoenix

相關問題