2017-02-24 9 views
0

私はセレンとC#にかなり新しいですし、いくつかの助けを必要としています。私はいくつかのベースのセレンテストを作成するためにいくつかのオンラインチュートリアルを続けてきましたが、今は別のサイトにそれらを適用しようとしています。OpenQA.Selenium.ElementNotVisibleException:要素は見えないセレンのC#

私が持っている問題は、私が選択することはできませんラジオボタンがあるということです。私は多くの記事を見て、いくつかのことを試してみました

error: OpenQA.Selenium.ElementNotVisibleException

得るが、私はそれを動作させることはできません。これが私のコードが動作していないか、他の何かを試す必要があるかどうかはわかりません。

私が使用しているウェブサイトは次のとおりです。url
郵便番号、電子メールアドレスを入力し、燃料の種類を選択する必要がありますが、私は要素のいずれかを選択するために見つけることができない次のクリックした後。

私は待機を追加し、同上およびXPathで検索しようとし、IJavaScriptExecutorを使用して試してみましたが、何も動作していないようにみえます。私もここでブラウザ

を最大化しようとしたことは私のコードです:

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

誰も私を助けることができるしてください?

+0

あなたはおそらく間違っ要素、ラジオボタンのように見える何かをクリックしようとしているが、隠されています。関連する 'html'をラジオボタンとあなたが試している' html'を囲むための[how to ask](http://stackoverflow.com/help/how-to-ask)ガイドに従って質問に直接投稿してくださいクリックする。 – mrfreester

+0

セレンではxpathを使うことができるので、クロムでデベロッパーモードに入り、ラジオボタンをハイライト表示させるので、htmlとxmlを右クリックすると表示されます。 – EpicKip

答えて

0

inputid「DualFuel」は目に見える入力ではありませんが、あなたがクリックしようとしているものに含まれています。

代わりにこれを試してみてください:

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

これはあなたの入力が含まれているdivを取得します。 for属性が「dualFuel」のlabelをクリックしてみることもできます

次に、btnFuelType.click()の要素をクリックするだけです。クリックできない、または存在しないエラーが発生した場合は、コメントでお知らせください。これまたはほとんどの場合、IJavaScriptExecutorを使用する理由はありません。

+0

ありがとう。それは完璧に働いた –

+0

@RyanHowardそれを聞いてうれしい:)あなたがそれが役に立つと分かった場合、アップホートと了解を忘れないでください。運が良かった! – mrfreester

関連する問題