在C#中将正则表达式与Selenium结合起来

时间:2015-07-22 12:43:14

标签: c# regex selenium selenium-webdriver

我有一个自动化套件,目前正在针对Wordpress(一个需要练习的测试网站)进行测试。我试图验证用户编辑现有页面时他们被带到正确的屏幕。以前,以下代码段工作正常,但现在下面提到的ID不再存在(它是一个图像)。

public static bool IsInEditMode()
{
   return Driver.Instance.FindElement(By.Id("icon-edit-pages")) != null;
}

Assert.AreEqual(NewPostPage.IsInEditMode(), "You are not in edit mode");

我定位的HTML是......

<h2>
Edit Page 
<a href="http://localhost/wordpress/wp-admin/post-new.php?post_type=page" class="add-new-h2">Add New</a>
</h2>

我想提取h2标签'编辑页面'的值。目前我也得到了锚点'添加新'的值,我需要忽略它。

使用带有“h2:first-child”的CssSelector返回两个值。

我想我需要使用正则表达式,如果有人有任何建议可以提供帮助,那就太好了。

我尝试在JSFiddle中做类似的事情,但需要C#等价物

var myString = document.getElementsByTagName('h2')[0].innerHTML;
var newString = myString.replace(/<([^>]+?)([^>]*?)>(.*?)<\/\1>/ig, "");
console.log(newString);

2 个答案:

答案 0 :(得分:0)

您还可以获取父元素的文本并从中删除子元素的文本:

var parent = Driver.FindElement(By.TagName("h2"));
var child = parent.FindElement(By.TagName("a"));
var text = parent.Text.Replace(child.Text, "").Trim();

答案 1 :(得分:0)

您可以使用StringAssert来验证要检查的字符串是否包含预期的字符串。我认为更好,因为你不需要使用正则表达式

示例:

StringAssert.Contains(message, expectedmessage);