bugfix> c# > 投稿

セレンドライバを使用してテーブルを埋めようとしていますが、見つけることができるすべてのドキュメントは、セルからデータを取得する方法のみを示しています。以下を使用してテーブルセルにアクセスできます。

var rows = Driver.FindElement(By.Id("Products")).FindElements(By.XPath("id('Products')/tbody/tr"));
var cells = tableRows[1].FindElements(By.XPath("td"));

しかし、その中のデータを更新する方法を見つけることができませんでした。 「テキスト」プロパティにはGetメソッドのみがあり、SendKeys()関数は機能しません。セルの値を編集するにはどうすればよいですか?

サイドノートとして、私のセルにはhtmlの「入力」が含まれています。セルのFindElement関数を使用してアクセスしようとしましたが、何らかの理由で見つかりません。

回答 2 件
  • 一般的に言えば、 SendKeys  セルに実際に入力要素が含まれている場合に機能するはずです。しかし、入力要素を見つけることができないと言っているので、入力要素は常に各セルに存在しないと思います。入力要素をそのセルに表示するには、おそらく最初にセルをクリックする必要があります。要素を検査すれば、開発ツールを使用して検証できるはずです それをクリックします。

  • IWebElementはテキストを変更するメソッドを提供しませんが、少しのJSを使用できます。

    ((IJavaScriptExecutor)Driver).ExecuteScript("document.getElementByXXXXX.innerHTML = "VALUE";");
    
    

    https://seleniumhq.github.io/selenium/docs/api/dotnet/html/M_OpenQA_Selenium_IJavaScriptExecutor_ExecuteScript.htm

あなたの答え