使用Selenium webdriver查找元素

时间:2017-02-14 20:48:44

标签: c# selenium xpath selenium-webdriver automation

希望你们都很好。我对selenium很新,还有一个完整的新手堆栈溢出,我希望我不违反任何规则。

我正在尝试使用以下

创建测试框架和一些测试

c#,selenium webdriver,specflow,nunit

我目前正在针对sql server DB运行查询以检索一些文本,然后尝试使用该文本来验证并在网站上搜索该元素。我遇到的问题是该网站有元素html编码

例如:

从数据库中检索的数据可能类似于 - “氧化铝MB中国冶金等级交付......”

网站上的元素如下 -

<span class="com">Alumina&nbsp;MB&nbsp;China&nbsp;metallurgical&nbsp;grade&nbsp;delivered&nbsp;duty&nbsp;paid&nbsp;RBM/tonne</span>

有谁知道我如何将从DB检索到的数据解析为findElement命令,以便在网站上包含&nbsp;

时轻松找到该元素

期待您的回复。

非常感谢 Suban

3 个答案:

答案 0 :(得分:1)

尝试使用 System.Web.HttpUtility.HtmlDecode

来转义html字符

它对我有用:

var escaped = System.Web.HttpUtility.HtmlDecode(".//span[text()='Alumina&nbsp;MB&nbsp;China&nbsp;metallurgical&nbsp;grade&nbsp;delivered&nbsp;duty&nbsp;paid&nbsp;RBM/tonne']");
IWebElement element = driver.FindElement(By.XPath(escaped));

答案 1 :(得分:0)

您应首先将xpath字符串中的$nbsp;的所有实例替换为,然后搜索

答案 2 :(得分:0)

IWebElement element = driver.FindElement(By.XPath("//span[contains(@class'com') and normalize-space(translate(., '\u00A0', ' '))='Alumina MB China metallurgical grade delivered']"));

说明: 使用xpath查找包含字符串span的类的com元素,从中获取文本(.)替换所有&nbsp个字符(即unicode {{1 }}具有常规\u00A0字符,并剥离前导和尾随空格(在您的情况下可能不需要最后一部分)。

注意:space之后应该放在单引号中的字符串应该只包含常规空格。