1

遅くて、ここで簡単なものが欠けているに違いありませんが、それを理解できません。

Webdriver を使用してフォームのユーザー入力を自動化しようとしています。問題は、フォームが動的で、多くのカスタム フィールドがあることです。この場合、フォームのすべてのテキスト入力ボックスに単純な文字列を送信しようとしています。道半ばだと思います。XPath を使用してすべてのテキスト フィールドを取得し、それらをリストに入れることができます。しかし、彼らがそこにいると、彼らと対話する方法がわかりません.これまでのところ、私が持っているコードは次のとおりです。

List<IWebElement> textfields = new List<IWebElement>();

var test = Driver.FindElements(By.XPath("//*[@type='text']"));

foreach (IWebElement fields in test)
{
    textfields.Add(fields);
}

私が WebDriver とやり取りする方法は、次のようなものです。

Driver.FindElements(By.XPath(querygoeshere)).SendKeys("test");.

ただし、リスト内のすべてが IWebElement です。次に何をすればよいですか? 私はここで間違った道を進んでいますか?

4

2 に答える 2

2

C#構文はわかりませんが、次のようなアプローチが役立つはずです。

List<IWebElement> textfields = new List<IWebElement>();
textfields = Driver.FindElements(By.XPath("//*[@type='text']"));

foreach (IWebElement field in textfields){
    field.SendKeys("test);
}
于 2013-01-29T05:59:28.753 に答える
1

現在のXPathクエリでは、実際にはすべてのテキストボックスが選択されるわけではないことに注意してください。text入力のみが可能な-のタイプを持つ要素のみが選択されます。

textareaこれは要素を見逃します。これはあなたにとっては問題ないかもしれませんが、それでも:

var textBoxes = new List<IWebElement>();
textBoxes = Driver.FindElements(By.CssSelector("input[type='text']"));

foreach (IWebElement textBox in textBoxes)
{
    textBox.SendKeys("test");
}   

textarea要素を含めるには:

var textBoxes = new List<IWebElement>();
var textAreas = new List<IWebElement>();

textBoxes = Driver.FindElements(By.CssSelector("input[type='text']"));
textAreas = Driver.FindElements(By.CssSelector("textarea"));

textBoxes.AddRange(textAreas);

foreach (IWebElement textBox in textBoxes)
{
    textBox.SendKeys("test");
}   

少なくとも、XPathを使用する必要がある場合は、明示的に(*すべての要素を検索しますが、inputとにかく要素のみが必要です)、明示的にしてください//input[@type='text']

于 2013-01-29T10:01:00.447 に答える