Selenium找到隐藏的元素C#

时间:2016-03-11 07:19:12

标签: c# selenium selenium-chromedriver

我有具体情况,从Google Chrome中的Inspect元素我有这个:

 <span class="markup--quote markup--p-quote is-other" name="anon_7ee3d25bf521" data-creator-ids="anon">If what you care about&#8202;—&#8202;or are trying to report on&#8202;—&#8202;is impact on the world, it all gets very slippery. You’re not measuring a rectangle, you’re measuring a multi-dimensional space. You have to accept that things are very imperfectly measured and just try to learn as much as you can from multiple metrics and anecdotes.</span>

我想根据data-creator-ids="anon"获取文字,但问题是当我点击查看页面来源时,这是完全隐藏的。

我试试这个:

IWebElement ell = driver.FindElement(By.CssSelector("[data-creator-ids='anon']"));

            MessageBox.Show(ell.GetAttribute("innerHTML"));

问题:

  

OpenQA.Selenium.NoSuchElementException未处理
  HResult = -2146233088消息=没有这样的元素:无法找到   element:{“method”:“css   selector“,”selector“:”[data-creator-ids ='anon']“}(会话信息:   chrome = 48.0.2564.116)(驾驶信息:chromedriver = 2.21.371459   (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4),platform = Windows NT 10.0   x86_64)Source = WebDriver

我也尝试过Class Name但同样的问题。 得到这个文本有什么技巧吗?

另外我有一个按钮有同样的问题,我只需要Id但是按钮完全隐藏在html源代码中:

<button class="button button--chromeless" data-action="select-anchor" data-action-value="3331">Top highlight</button>

2 个答案:

答案 0 :(得分:2)

如果您查看this interesting post,您会注意到在使用CSS选择器时需要定义元素类型:

element[attribute(*|^|$|~)='value']

基于此,您所要做的就是将正确的元素添加到选择器中;在你的情况下是一个span元素:

IWebElement ell = driver.FindElement(By.CssSelector("span[data-creator-ids='anon']"));
MessageBox.Show(ell.GetAttribute("innerHTML"));

因此,您应使用"[data-creator-ids='anon']"代替"span[data-creator-ids='anon']"。这应该会产生正确的结果。

答案 1 :(得分:-1)

尝试通过XPath而不是CSSSelector可能会更好。这可能会让您更近一步:

IWebElement ell = driver.FindElement(By.XPath("//span[@data-creator-ids='anon']"));