2016-10-12 10 views
0

公開Webサイトのdiv内からデータを取得しようとしています。 Selenium WebDriverは要素を見つけることはできません。 XPathでもIDとクラスの要素を見つけようとしましたが、まだ何も見つかりませんでした。 PageSourceを見るとhtmlページコードが表示されます。これは、ドライバの動作を確認します。私はここで間違って何をしていますか?セレンV2.53.1 // IEDriverServerのWin32 v2.53.1WebdriverはIDまたはクラスで要素を見つけられません。NoSuchElementException

マイコード:

IWebDriver driver = new InternetExplorerDriver("C:\\Program Files\\SeleniumWebPagetester"); 
    driver.Navigate().GoToUrl("D:\\test.html"); 
    await Task.Delay(30000); 
    var src = driver.PageSource; //shows the html page -> works 
    var ds = driver.FindElement(By.XPath("//html//body")); //NoSuchElementException 
    var test = driver.FindElement(By.Id("aspnetForm")); //An unhandled exception of type 'OpenQA.Selenium.NoSuchElementException' occurred in WebDriver.dll 
    var testy = driver.FindElement(By.Id("aspnetForm"), 30); //'OpenQA.Selenium.NoSuchElementException' 
    var tst = driver.FindElement(By.XPath("//*[@id=\"lx-home\"]"), 30); //'OpenQA.Selenium.NoSuchElementException' 
    driver.Quit(); 

シンプルなHTMLページ:

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8" /> 
    </head> 
    <body> 
     <form action="#" id="aspnetForm" onsubmit="return false;"> 
     <section id="lx-home" style="margin-bottom:50px;"> 
      <div class="bigbanner"> 
      <div class="splash mc"> 
       <div class="bighead crb">LEAD DELIVERY MADE EASY</div> 
      </div> 
      </div> 
     </section> 
     </form> 
    </body> 
</html> 

サイドノートで、私のXPathはHtmlWebで完璧に動作します:

string Url = "D:\\test.html"; 
    HtmlWeb web = new HtmlWeb(); 
    HtmlDocument doc = web.Load(Url); 
    var element = doc.DocumentNode.SelectNodes("//*[@id=\"lx-home\"]"); //WORKS 
+1

コードにOKが見えますここにあなたのオプションがあります。私。あなたは "GoToUrl"ステップの後に明示的な待機を試みることができますし、div要素を読むこともできますか? webdriverがフォーム自体またはすべての要素に問題があるかどうかを確認したい – Sid

+1

さらに、IEとドライバのバージョンについても言及してください。 – Sid

+0

@Sidコードを更新し、待ち時間とxpathを本文に追加しました。そして、私はhtmlページのnoページからも削除しました。 – Freddy

答えて

2

IEはローカルファイルを別の方法で解析しているようですので、DOMにアクセスすることはできません。

  1. 使用クロムの代わりに、IE
  2. 代わりLOCALFILEのURLを開くためのコードを変更、その後C:\inetpub\wwwrootにファイルを移動し、IEを使用してください:driver.Navigate().GoToUrl("http://localhost/test.html");
+0

ありがとう! Chromeを使用して、ホストされたhtmlファイルを作成し、ドライバをプログラムファイルから移動させることがそのトリックでした。 – Freddy

関連する問題