【问题标题】:using Selenium webdriver to find elements with  使用 Selenium webdriver 查找元素
【发布时间】:2017-07-03 07:40:15
【问题描述】:

希望你一切都好。我对 selenium 很陌生,而且是一个完全的新手来堆栈溢出所以我希望我没有违反这里的任何规则。

我正在尝试使用以下内容创建一个测试框架和一些测试

c#、selenium webdriver、specflow、nunit

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

例如:

从数据库中检索到的数据可能类似于“Alumina MB China 冶金级交付......”

网站上的元素如下-

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

有谁知道我如何将从数据库中检索到的数据解析到 findElement 命令中,以便在站点上轻松找到包含 的该元素

期待您的来信。

非常感谢 苏班

【问题讨论】:

  • 你能展示你到目前为止所做的事情吗?
  • 到目前为止我已经尝试过 driver.FindElement(By.Xpath("//*[@class='com' and text()='Alumina MB 中国 冶金 级 已交付&nbsp ;关税 已付 RBM/吨']"));
  • 你好苏班。也许 Replace 方法可以帮助你的情况。 string htmlString = dataBaseString.Replace(" ", " ");
  • 嗨@Y-BCause,我尝试在chrome中搜索以下元素但找不到元素-//*[@class='com' and text()='氧化铝 MB 中国 冶金 g‌​rade 交货&‌​nbsp;关税已付&‌​nbsp;RBM/吨']

标签: c# selenium xpath selenium-webdriver automation


【解决方案1】:

尝试使用 System.Web.HttpUtility.HtmlDecode

转义 html 字符

它对我有用:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

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

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

      注意:= 后面的单引号中的字符串只能包含常规空格。

      【讨论】:

        猜你喜欢
        • 2014-07-18
        • 2017-09-12
        • 1970-01-01
        • 2021-03-31
        • 1970-01-01
        • 2021-07-04
        • 2014-08-13
        • 1970-01-01
        • 2012-12-12
        相关资源
        最近更新 更多