【问题标题】:I cant Locate the Xpath of Pseudo Comment我找不到伪注释的 Xpath
【发布时间】:2019-05-20 21:35:31
【问题描述】:

我只是想知道如何获取伪元素的 Xpath 实际上问题是在这个中我想在这个 Div 上 .CLick() 它的角色是按钮所以我尝试只是到带有 Div 类名称的 xpath 它正在定位元素但未单击我必须单击此 ::after 但我无法获取 Xpath 因为它是伪元素

<div id=":l6" class="T-I J-J5-Ji amD T-I-awG T-I-ax7 T-I-Js-Gs L3" 
              role="button" tabindex="0" 
              data-tooltip="Older" 
              aria-label="Older" 
              style="user-select: none;" 
              xpath="1">

  <span class="amF" 
        aria-hidden="true">
     &nbsp;
  </span>
  <img class="amJ T-I-J3" 
       src="images/cleardot.gif" alt="">
::after
</div>

【问题讨论】:

  • 你能分享上面至少几个元素的完整 HTML 吗?
  • 你能告诉我如何添加截图,我可以解释你好
  • 复制过去的 DOM... 或提供 url...
  • 请花一点时间为您的问题添加大小写、标点符号等。现在它看起来像一张勒索信,很难阅读。

标签: c# selenium


【解决方案1】:

我读到的"The Selenium API doesn't support pseudo-elements"

所以你可以尝试使用Actions

我有一个带有 CssSelector 的示例(我没有您可以添加的完整路径):

Actions action = new Actions(Session.Driver);
action.MoveToElement(FindElement(By.CssSelector("div.img::after"))).ContextClick().Build().Perform();

作为最后的手段,您可以将 JavaScript 与 ExecuteScript 一起使用,如下所示:

var afterElem = driver.FindElement(By.CssSelector("div.img"));

var buttonAfter = driver.ExecuteScript(
    "return window.getComputedStyle(arguments[0],'::after');"
    , afterElem);
buttonAfter.click();

您需要使用 CssSelector 或使用 XPath。

希望对您有所帮助!

【讨论】:

  • 未知错误:window.getComputedStyle(...).click 不是函数\n(会话信息:chrome=74.0.3729.157)\n(驱动程序信息:chromedriver=2.42.591088 (7b2b2dca23cca0862f674758c9a3933e685c27d5 ),平台=Windows NT 6.3.9600 x86_64)
  • 现在这是执行脚本后的错误
  • 你是对的!我的错!我修好了它现在应该可以工作了...我没有检查它,但是这个答案应该让您了解如何单击它...
  • Nooo Broo 我仍然无法理解如何单击伪元素
  • 正如我在答案中指出的,最好的方法是使用Actions,我没有 HTML 或网站链接,所以我不知道如何为您提供更多帮助不仅仅是推荐没有工作代码的情况......
猜你喜欢
  • 2022-11-29
  • 2017-11-14
  • 1970-01-01
  • 2017-02-01
  • 1970-01-01
  • 2012-04-14
  • 2017-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多