OpenQA.Selenium.ElementNotVisible Exception:元素看不到硒C#



我对Selenium和C#是相当新的,需要一些帮助。我一直在遵循一些在线教程来创建一些基于硒的测试,但现在我试图将它们应用于其他网站。

我遇到的问题是,有一个我无法选择的广播按钮。我得到

错误: OpenQA.Selenium.ElementNotVisibleException

我看过很多帖子并尝试了几件事,但是我无法正常工作。我不确定这是否是由于我的代码不起作用或是否需要尝试其他方法。

我正在使用的网站是:url
输入邮政编码后,一个电子邮件地址并单击接下来,您需要选择燃料类型,但我找不到任何要选择的元素。

我已经尝试使用IJavaScriptExecutor,添加了等待和尝试通过ID和XPATH查找,但似乎没有任何作用。我还尝试过最大化浏览器

这是我的代码:

 namespace TestAutomation
 {
   class SelectFuelObject
   {
    public SelectFuelObject()
    {
        PageFactory.InitElements(PropertiesCollection.driver, this);
    }
    [FindsBy(How = How.Id, Using = "dualFuel")]
    public IWebElement btnFuelType { get; set; }
    public void FuelType()
    {
        btnFuelType.ClickOnInvisibleElement();
    }
   }
}

JavaScript类

namespace TestAutomation
{
    public static class HiddenElements
    {
        public static void ClickOnInvisibleElement(this IWebElement element)
        {
           ((IJavaScriptExecutor)PropertiesCollection.driver).ExecuteScript("arguments[0].hidden = false;", element);
            element.Click();
        }
    }
}

propertiesCollection类

    class PropertiesCollection
    {
        //Auto-Implement Property
        public static IWebDriver driver { get; set; }
    }
}

这是我尝试的等待,这只是在分配的时间之后导致一段时间

WebDriverWait wait = new WebDriverWait(PropertiesCollection.driver, TimeSpan.FromSeconds(30)); 
wait.Until(ExpectedConditions.ElementIsVisible(By.Id("DualFuel")));

请任何人可以帮我吗?

带有id" DualFuel"的input不是可见的输入,但它包含在我认为您要单击的内容中。

而是尝试一下:

[FindsBy(How = How.CssSelector, Using = ".opt.dual")]
public IWebElement btnFuelType { get; set; }

这将获得包含您输入的div。您也可以尝试使用for属性" DualFuel"单击label

然后,您可以使用btnFuelType.click()单击该元素。如果您遇到错误或不存在的错误,请在评论中告诉我。在此或大多数情况下,应该没有任何理由使用IJavaScriptExecutor

最新更新