2017-02-24 5 views
0

Ich bin ziemlich neu in Selenium und C# und brauche etwas Hilfe. Ich habe einige Online-Tutorials verfolgt, um einige Selen-Tests zu erstellen, aber jetzt versuche ich, sie auf eine andere Seite anzuwenden.OpenQA.Selenium.ElementNotVisibleException: Element nicht sichtbar Selen C#

Das Problem, das ich habe, ist, dass es eine Optionsschaltfläche gibt, die ich nicht auswählen kann. Ich habe die

error: OpenQA.Selenium.ElementNotVisibleException

Ich habe viele Beiträge angesehen und verschiedene Dinge ausprobiert, aber ich kann es nicht zur Arbeit bekommen. Ich bin mir nicht sicher, ob dies daran liegt, dass mein Code nicht funktioniert oder ich etwas anderes ausprobieren muss.

Die Website Ich verwende ist: url
Nach einer Postleitzahl eingeben, eine E-Mail-Adresse und klicken Sie neben Kraftstofftyp auszuwählen sind erforderlich, aber ich kann nicht alle Elemente finden auszuwählen.

Ich habe versucht mit IJavaScriptExecutor, Hinzufügen einer Wartezeit und versuchen, durch Id und XPath zu finden, aber nichts scheint zu funktionieren. Ich habe auch versucht, den Browser zu maximieren

hier ist mein 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(); 
    } 
    } 
} 

Javascript Klasse

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 Klasse

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

Dies ist das Warten habe ich versucht, dem nur führt zu einer Zeitüberschreitung nach der zugewiesenen Zeit

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

Bitte kann mir jemand helfen?

+0

Sie versuchen wahrscheinlich, auf das falsche Element zu klicken, etwas, das wie der Radio-Button aussieht, aber versteckt ist. Bitte posten Sie den entsprechenden 'html' direkt in der Frage gemäß dem [how to ask] (http://stackoverflow.com/help/how-to-ask) Handbuch für den Radiobutton und den umgebenden' html', den Sie versuchen klicken. – mrfreester

+0

Mit Selen können Sie Xpath verwenden, also gehen Sie einfach im Entwicklermodus mit Chrom, markieren Sie den Radiobutton, so zeigt es Ihnen die HTML, die mit ihm geht und Rechtsklick auf den HTML-Befehl xpath – EpicKip

Antwort

0

Die input mit id "DualFuel" ist keine sichtbare Eingabe, aber es ist in dem enthalten, was ich denke, dass Sie versuchen zu klicken.

Versuchen Sie stattdessen:

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

Dies wird die div erhalten, die Ihre Eingabe enthält. Sie könnten auch versuchen, klicken Sie auf label mit dem for Attribut "DualFuel"

Dann können Sie einfach auf das Element mit btnFuelType.click() klicken. Wenn ein Fehler auftritt, der nicht anklickbar oder vorhanden ist, lassen Sie es mich in einem Kommentar wissen. Es sollte keinen Grund geben, die IJavaScriptExecutor in diesem oder den meisten Fällen zu verwenden.

+0

Great Thank you. Das hat perfekt funktioniert –

+0

@RyanHoward froh, es zu hören :) Vergessen Sie nicht zu upvote und akzeptieren Sie die Antwort, wenn Sie es hilfreich fanden. Viel Glück! – mrfreester

Verwandte Themen