OpenQA.Selenium.ElementNotVisibleException:元素不可见Selenium C#

时间:2017-02-24 17:03:50

标签: c# selenium

我对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")));

请有人帮助我吗?

1 个答案:

答案 0 :(得分:0)

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

请改为尝试:

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

这将获得包含您输入的div。您也可以尝试使用label属性“dualFuel”

点击for

然后,您只需点击btnFuelType.click()的元素即可。如果您因无法点击或出现而遇到错误,请在评论中告诉我。在这个或大多数情况下,我们没有任何理由使用IJavaScriptExecutor