2015-02-09 15 views
0

C#Selenium Webdriver 所以我需要確保我的任何頁面(大約200頁)都不包含特定的已知字符串。有沒有什麼辦法可以掃描頁面中是否存在此字符串,如果存在,那麼返回該元素的ElementID和整個字符串? 例如我的來源是這樣的:我想檢索包含已知字符串的ElementID

<a id="cancel_order_lnkCancel">Cancel Order</a> 

我要搜索整個頁面(<div id="sitewrapper">)上的字「取消」,並同時返回 cancel_order_lnkCancel;取消訂單

感謝

回答

1

你可以使用XPath通過文本查找。例如:

var element = driver.FindElement(By.XPath(string.Format("//*[contains(text(), '{0}')]", value))); 

value是您正在搜索的字符串。

然後獲取該元素的標記和內容:

var html = element.GetAttribute("outerHTML"); 
var text = element.Text; 

var text = element.GetAttribute("innerHTML"); 
+0

它不會拋出找不到元素的異常嗎? – 2015-02-10 05:30:12

+0

謝謝大家,但我想返回包含該字符串的實際元素ID?我可以從我的IWelement中檢索一個值,類似於0.45616444828920066-1,但我想要的實際ID是cancel_order_lnkCancel。 hmmmm – 2015-02-10 10:01:52

+0

這看起來像它會工作:myWebElement.GetAttribute(「outerHTML」); – 2015-02-10 10:22:58

0

我還沒有在C#中的工作具有約束力,但你可以用FindElements獲得包含所有元素的列表文本。毫無疑問,你可以使用@ Jarga的xpath。 FIndElements的好處在於,它不會拋出異常(至少這是java中發生的情況),但是如果的value爲空,則必須使用try catch來處理getAttribute。如果您遍歷列表,您可以使用getText方法獲取所有文本。

相關問題