【问题标题】:'element not interactable' exception in C# chromedriverC# chromedriver 中的“元素不可交互”异常
【发布时间】:2020-11-14 11:39:06
【问题描述】:

我在 c# 中使用 selenium chromedriver 尝试单击打印按钮,但是我收到“元素不可交互”的异常,这里是打印按钮的网站源代码:

<p _ngcontent-c27="" class="print"><span _ngcontent-c27="" class="floatRight">Print</span><img _ngcontent-c27="" class="printImg" src="../../../../../assets/images/Print.svg"></p>

我尝试过的:

driver.FindElementById("clippedTab").Click(); // Successfully clicks on the 'Clipped' tab

//None of the below worked:

driver.FindElementByClassName("print").Click();
// and
driver.FindElementByClassName("printImg").Click();
// and
driver.FindElementByClassName("floatRight").Click();

但是这些都不适合我。

使用的网站是bjs.com 和打印按钮,可以在Clipped 选项卡上找到。

我做错了什么,为什么元素不是难以处理的,我该如何解决这个问题?

【问题讨论】:

    标签: c# selenium xpath css-selectors webdriverwait


    【解决方案1】:

    您正在制作的 Xpath 实际上导致了问题。

    以上所有 Xpaths 都不是唯一的,实际上指向 2 个 Xpaths 1 是您要单击的 Print,其他不是可交互(或隐藏)的。因为它试图点击隐藏的,所以它会抛出错误。 看图片

    简单的解决方案:- 使用 XPath 作为 :: //*@id="clipped"]/div/div[1]/div[3]/div/p/span

    【讨论】:

    • 我收到一个错误:OpenQA.Selenium.NoSuchElementException: '没有这样的元素:无法找到元素:{"method":"xpath","selector":"//*[@id= '剪辑']/div/div1/div[3]/div/p/span"}
    • 我发现了问题,正确的 xPath 应该是://*[@id='clipped']/div/div[1]/div[3]/div/p/span
    • 编辑答案后,我会将其标记为解决方案,谢谢!
    • 好吧,我添加了相同的..但它把它作为一个链接..现在编辑了
    【解决方案2】:

    所需的元素是Angular 元素,因此对于Click(),您必须为ElementToBeClickable() 诱导WebDriverWait 元素,您可以使用以下Locator Strategies 之一:

    • CssSelector:

      new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("img.printImg"))).Click();
      
    • XPath:

      new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//img[@class='printImg']/h2"))).Click();
      

    【讨论】:

      【解决方案3】:

      在您可以 Click() 之前,该元素必须是可见的(这通常是使其“可交互”的原因)。您是否在 Click() 之前打开“已剪辑”选项卡?

      【讨论】:

      • 是的,我使用成功点击选项卡的代码:driver.FindElementById("clippedTab").Click();但是它无法单击打印按钮。
      猜你喜欢
      • 1970-01-01
      • 2020-02-11
      • 2020-09-28
      • 2021-03-10
      • 1970-01-01
      • 2017-12-24
      • 2017-10-22
      • 1970-01-01
      • 2020-08-26
      相关资源
      最近更新 更多