我有具体情况,从Google Chrome中的Inspect元素我有这个:
<span class="markup--quote markup--p-quote is-other" name="anon_7ee3d25bf521" data-creator-ids="anon">If what you care about — or are trying to report on — 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>
答案 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']"));