我一直在努力尝试使用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标签内特定字符串的存在的方法,我全都是耳朵。
答案 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");