2014-04-21 38 views
0

我想通過搜索匹配的innerHTML字符串來獲取特定元素ID。例如,我想查找具有innerHTML「汽車開始」的元素ID。如何通過使用C#和Selenium搜索InnerHTML來查找元素

enter image description here

public static bool SelectSomething(IWebDriver driver, string searchName) 
{ 
    var js = driver as IJavaScriptExecutor; 
    if (js == null) return false; 
    var element = (string) js.ExecuteScript("...script to get the ids..."); 
    var x = driver.FindElement(By.Id(element)); 
    x.Click(); 
    return true; 
} 

我知道這是可能遍歷所有的innerHTML的使用JavaScript,但你怎麼返回一旦你找到了「searchName」字符串相匹配的innerHTML的ID找到?

+0

爲什麼一個簡單的'.Text'不行? – Arran

+0

我沒有考慮過......文字會去哪裏? –

回答

2

使用jQuery很簡單,只需使用:包含 - https://api.jquery.com/contains-selector/

http://jsfiddle.net/jayblanchard/5UvFE/

var found = $("td:contains('Start of Car')").attr('id'); 

這允許您返回有問題的元素的ID。

或者在這裏是一種只有JavaScript來做到這一點 -

function textID(node, text) { 
    if (node.nodeValue == text) { 
     return node.parentNode; 
    } 

    for (var i = 0; i < node.childNodes.length; i++) { 
     var returnValue = textID(node.childNodes[i], text); 
     if (returnValue != null) { 
      return returnValue; 
     } 
    } 

    return null; 
} 

http://jsfiddle.net/jayblanchard/5UvFE/1/

相關問題