当前位置: 首页 > 知识库问答 >
问题:

Selenium找到隐藏元素C#

郎言
2023-03-14

我有具体的情况,从检查元素在谷歌浏览器我有这个:

 <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>

我想根据数据创建者id=“anon”获取文本,但问题是,当我单击查看页面源时,这是完全隐藏的。

我试试这个:

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

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

问题:

OpenQA.Selenium.NoSuchElment异常未处理
HResult=-2146233088 消息 = 没有这样的元素: 无法找到元素: {“方法”:“css 选择器”,“选择器”:“[数据-创建者-ids='anon'anon']”} (会话信息: chrome=48.0.2564.116) (驱动程序信息: chromedriver=2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4),平台=Windows NT 10.0 x86_64) 源=WebDriver

我也试着用类名,但是同样的问题。有什么技巧可以得到这篇文字吗?

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

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

共有2个答案

南宫建白
2023-03-14

尝试通过XPath而不是CSS选择器来获取可能更好。这很可能会让你更近一步:

IWebElement ell = driver.FindElement(By.XPath("//span[@data-creator-ids='anon']"));
陈宏胜
2023-03-14

如果你看一下这篇有趣的文章,你会注意到在使用CSS选择器时需要定义一个元素类型:

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

基于此,您所要做的就是将正确的元素添加到选择器中;在你的例子中,一个跨度元素:

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

因此,您应该使用“span[数据创建者 ID='anon']”,而不是“span[数据创建者 ID='anon']”。这应该会产生正确的结果。

 类似资料:
  •  有时候我们会碰到一些元素不可见,这个时候selenium就无法对这些元素进行操作了。例如,下面的情况: Python   页面主要通过“display:none”来控制整个下拉框不可见。这个时候如果直接操作这个下拉框,就会提示: from selenium import webdriverfrom selenium.webdriver.support.select import Selectim

  • 问题内容: 我正在尝试自动执行Google云端硬盘中的上传文件功能。 用于传递参数的元素以高度-0px隐藏。 用户操作均不会使该元素可见。因此,我需要一种变通方法来在不可见的元素上单击。 上述元素的xpath是- 我在用 例外- 元素当前不可见,因此可能无法与之交互。 我尝试使用JavascriptExecutor。但是找不到确切的语法。 问题答案: 试试这个: 上面的那堆将改变文件输入控件的可见

  • 问题内容: 嗨,我想知道如何使用Selenium WebDriver单击隐藏元素和/或禁用元素。 我知道使用selenium1可以执行以下操作: 这将起作用,但是对于selenium2(WebDriver),则不起作用。我不想使用jquery来启用或显示隐藏字段或JavaScript。这是因为大多数测试都使用xpath。 还是我只需要保留旧的selenium,就可以单击隐藏的字段? 问题答案: 使

  • 在实现selenium测试之前,我尝试在工作中为selenium测试解决一个recaptcha。 我使用的用例:https://www.google.com/recaptcha/api2/demo 系统也是如此。我试图找到验证码令牌,但每次它都返回null元素。到目前为止,硒的主要作用是: Bys. CssSelector等也是如此。 我已经在正确的IFrame中了,因为页面源已正确打印出来,但通

  • 问题内容: 我目前正在扩展lavalamp插件以在下拉菜单上工作,但是遇到一个小问题。我需要知道隐藏元素的。现在,这个问题显然没有任何意义,而是我要寻找的是没有隐藏的元素的含义。 是显示它,抓住宽度然后再次隐藏的解决方案吗?肯定有更好的办法… 问题答案: 我唯一能想到的就是显示它(或它的一个副本)以允许检索offsetWidth。 对于此测量步骤,只需将其位置设为绝对位置并将其x或y值设置为较大的

  • Selenium WebDriver:2.35。火狐: 25.0 我想将鼠标移到一个div上,这将使隐藏的图像变得可见,然后单击该图像。我读过这里,这里,这里和其他的帖子。一般的答案是采取以下形式: 但是,这在下面的示例中不起作用: html: Javascript/jquery: CSS: C#测试代码: 问题是没有触发click事件。此外,该元素保持可见,因此任何后续鼠标悬停都会将其隐藏。当然