title: OpenQA.Selenium.ElementNotVisibleException : element not visible Selenium C#
body: <p>I am fairly new to Selenium and C# and need some help. I've been following some online tutorials to create some based selenium tests but now I'm trying to apply them to a different site. </p>
  
  <p>The issue I have is that there is a radio button which I cannot select. I get the</p>
  
  <blockquote>
    <p>error: <strong>OpenQA.Selenium.ElementNotVisibleException</strong></p>
  </blockquote>
  
  <p>I have looked at many posts and tried several things, but I cannot get it to work. I'm not sure if this is due to my code not working or if I need to try something else.</p>
  
  <p>The website I'm using is:<a href="https://quote.flowenergy.uk.com/" rel="nofollow noreferrer">url</a> <br>
  After entering a postcode, an email address and clicking next you are required to select a fuel type but I cannot find any of the elements to select.</p>
  
  <p>I have tried using <code>IJavaScriptExecutor</code>, adding a wait and trying to find by Id and xpath but nothing seems to work. I've also tried maximizing the browser</p>
  
  <p>here is my code:</p>
  
  <pre><code> 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();
      }
     }
  }
  </code></pre>
  
  <p>Javascript class</p>
  
  <pre><code>namespace TestAutomation
  {
      public static class HiddenElements
      {
          public static void ClickOnInvisibleElement(this IWebElement element)
          {
             ((IJavaScriptExecutor)PropertiesCollection.driver).ExecuteScript("arguments[0].hidden = false;", element);
              element.Click();
          }
      }
  }
  </code></pre>
  
  <p>PropertiesCollection class</p>
  
  <pre><code>    class PropertiesCollection
      {
          //Auto-Implement Property
          public static IWebDriver driver { get; set; }
      }
  }
  </code></pre>
  
  <p>This is the wait I tried which just results in a time out after the allotted time</p>
  
  <pre><code>WebDriverWait wait = new WebDriverWait(PropertiesCollection.driver, TimeSpan.FromSeconds(30)); 
  wait.Until(ExpectedConditions.ElementIsVisible(By.Id("DualFuel")));
  </code></pre>
  
  <p>Please can anyone help me?</p>