【问题标题】:Click On Highlighted pencil icon using selenium with c#在 c# 中使用 selenium 单击突出显示的铅笔图标
【发布时间】:2021-04-22 16:01:45
【问题描述】:

我试过这样:

//*[name()='svg']/*[name()='path' and contains(@d, 'M290.74 93.24l128.02']

但它会引发异常。

如果我们像这样使用"//*[name()='svg']/*[name()='path'",那么它会给出所有元素,但这不是我的实际要求。

我在这里发布了一些图片,请有人帮助我。我尝试了很多方法,但我没有做到这一点。

【问题讨论】:

  • 我通过将数据前缀选择为“fas”来做到这一点,它得到了解决。感谢您对我的帮助。

标签: c# selenium svg xpath webdriverwait


【解决方案1】:

尝试通过检查元素来获取选择器,然后在检查器中右键单击元素并复制 css 选择器。

【讨论】:

  • @Rob 这是上下文菜单的图片。不是代码、数据或错误消息。文本也已经输入到问题中。请解释一下是什么问题?
【解决方案2】:

所需的元素是它的父元素 <svg> 的唯一后代 <path> 元素,因此对于 Click() 元素,您必须为 ElementToBeClickable() 诱导 WebDriverWait 并且您可以使用以下任一Locator Strategies:

  • XPath:

    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//h5[text()='Brandes Intl Equity']//following::*[name()='svg' and @data-icon='pen'][@role='img']/*[name()='path']"))).Click();
    

【讨论】:

    【解决方案3】:

    尝试根据同级标题值选择图标

    "//*[name()='svg' and @data-icon='pen']/*[name()='path']"
    

    【讨论】:

    • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
    • 我无法决定我需要点击哪一个,所以我不能在这里使用h5标签//h5[.='Brandes Intl Equity']。它是根据灰色的铅笔图标决定的。
    • @Chenchubabu 好的,如果你不想在 XPath 中使用 h5,那么试试 "//*[name()='svg' and @data-icon='pen']/*[name()='path']"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多