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

Selenium WebDrive C#,Chrome,图标隐藏元素,不可点击[复制]

梁渊
2023-03-14

更新:主要问题是元素图标隐藏了一个按钮,无法点击。解决方案是,使用js。Executor,隐藏此图标。

我正在尝试使用Selenium WebDriver进行测试,它对我来说是新的,我有一个问题,一个元素,它是不可点击的,我试图通过link text,类名称,cssselector找到它,它不工作。

关于“元素不可点击”这个问题,我已经读了很多书,但还没有找到解决方案。希望你能给我好的建议。

Chrome版本67.0.3396.99,64位
Visual C#2017
Webdriver版本3.13.1.0

以下是我的剧本:

namespace MK_edit
{
    class Program
    {
        static void Main(string[] args)
        {
            IWebDriver driver = new ChromeDriver(@"C:\Users\alina\ProjectLibre");
            driver.Url = "http://test.test.com"; //not real url, I cannot show it
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(60); 
            driver.Manage().Window.Maximize();

            //close popup

            driver.FindElement(By.CssSelector("div.whatsnew-content"));
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
            driver.FindElement(By.CssSelector("button.btn.btn-success")).Click(); 
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(60);

            //edit part

            var lab = driver.FindElement(By.CssSelector("span.glyphicon.glyphicon-edit"));
            lab.Click();


        }

    }
}

元素信息:

<li class="allwaysVisible"><a href="#tab-old-edit" data-toggle="tab" title="Map_obj" data-i18n="[title]nav.edit"><span class="glyphicon glyphicon-edit"></span></a></li>

错误消息

Element <span class=\"glyphicon glyphicon-edit\">
</span> is not clickable at point (312, 24). 
Other element would receive the click: <div class=\"modal-backdrop fade\">
</div>\n

谢谢你!

共有3个答案

屈昊天
2023-03-14

在找到labosana元素之前,请添加一些等待

代码:

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));
wait.Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("span.glyphicon.glyphicon-edit")));

var labosana = driver.FindElement(By.CssSelector("span.glyphicon.glyphicon-edit"));
labosana.Click();
弘靖琪
2023-03-14

等待微调器/加载器消失,尝试在这样的方法中传递微调器元素“.modal background”。。。

        public static void WaitForNotVisible(IWebElement element, IWebDriver driver)
        {
            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
            wait.Until(drv =>
            {
                try
                {
                    if (element.Displayed)
                    {
                        return false;
                    }
                    return true;
                }
                catch
                {
                    return true;
                }
            });
        }

这样地。。。

var spinnerElement = driver.FindElement(By.CssSelector(".modal-backdrop"));
WaitForNotVisible(spinnerElement, driver);
labosana.Click();
东郭京
2023-03-14

根据您共享的错误消息,

我无法提供代码示例来解决您的问题,因为我没有网站链接。希望这有帮助。

 类似资料:
  • 问题内容: 我有以下问题。我在Firefox和Chrome上运行测试。在Firefox上测试可以正常运行,但在Chrome SauceLabs上会显示一条消息: 我在两种测试中均通过唯一的CSS选择器选择元素,方式相同: 有什么主意在这里吗? 问题答案: 我假设您具有所需的正确元素,即XPath是正确的。这里有几种方法: 尝试单击代替。 试试看 代替 尝试执行将在您要单击的元素事件时执行的。 我一

  • 问题内容: 这个问题是由于总的中间在试图忠实于什么实际用户一样。所以我在想这种方法: 首先,而不是查找元素,然后单击: 编写单击以下内容的通用函数: 然后,当发生此异常时,请尝试以其他方式单击。 您认为这种方法可行吗? 问题答案: 请仔细阅读此堆栈溢出答案以更好地理解。 更新 我们也可以尝试 也请尝试如下 尝试使用Y坐标单击 尝试使用X坐标单击 希望这对您有帮助

  • 问题内容: 我在CSS上遇到了一些麻烦,似乎找不到解决方案。我有这个HTML 现在,我只想隐藏文本“单击关闭”,而不隐藏div或其中的链接。 能做到吗? 问题答案: 可以在子元素上覆盖该属性,因此您可以执行以下操作: CSS:

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

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

  • 我有一个元素,只有当我悬停在它上面时才可见。 我编写了以下代码来覆盖面板,以便元素可见。 现在我试着点击它,但它说-ElementNotVisibleError:量角器中的元素不可见错误。 基本场景是,我想将鼠标悬停在面板上,然后单击隐藏元素,因为该元素在悬停之前是不可见的。