Selenium WebDriver和C#(VS):查找特定的标题字符串

时间:2014-06-24 13:05:04

标签: c# selenium selenium-webdriver

我一直在努力尝试使用IJavaScriptExecutor在页面中查找特定的标题字符串。这是页面中的html代码:

<div class="wrap">
   <h2>Edit Page <a href="http://www.webtest.bugrit.net/wordpress/wp-admin/post-
   new.php?post_type=page" class="add-new-h2">Add New</a></h2>
<div id...

我需要检查的文字是&#34;编辑页面&#34;字符串。

这是我最接近的,不是非常接近:

var element = FFDriver.Instance.FindElements(By.ClassName("add-new-h2"));
IJavaScriptExecutor js = FFDriver.Instance as IJavaScriptExecutor;

if (js != null) {
    string innerHtml = (string)js.ExecuteScript("return arguments[0].innerHTML;", element);
    //System.Windows.Forms.MessageBox.Show(innerHtml);
    if (innerHtml.Equals("Edit Page")) {
        return true;
    } else {
        return false;
    }
}

现在,我意识到我希望从该代码中得到的文字不是确切的字符串&#34;编辑页面&#34;。但它不应该归还一些东西吗?当我启用MessageBox行时,innerHtml字符串为空。

或者说,如果有人知道另一个,可能更容易,检查特定html标签内特定字符串的存在的方法,我全都是耳朵。

1 个答案:

答案 0 :(得分:0)

您的元素会返回<a>元素,而不是<h2>。您的<a>不包含Edit Page字符串。

尝试将这样的元素添加到父元素<h2>(仅当类名add-new-h2是唯一的时,否则您将获得第一个匹配的元素):

var element = FFDriver.Instance.FindElement(By.XPath(".//a[@class='add-new-h2']/.."));
var containsText = element.Text.Contains("Edit Page");