Webページにレコードのコレクションがあり、レコードをクリックすると「削除」リンクが表示されます(実際には常に非表示になっています) 。C#でSelenium WebDriverを使用して非隠し要素のみを検索する
この[削除]リンクにアクセスしようとすると、その値が使用されています。
私はDriver.FindElement
を使用する場合、それは最初が、それは隠しだにもかかわらず、リンクを削除し、そのため、それをクリックしない(と、それは右のリンクではないといけない)ことができ返します。
私が基本的にしたいのは、非表示になっているだけです。リンク。以下のコードはうまく機能しますが、すべての削除リンクを繰り返していくうちに、非効率的になる恐れがあります。
良い方法がありますか?
public class DataPageModel : BasePageModel
{
private static readonly By DeleteSelector = By.CssSelector("input[value=\"Delete\"]");
private IWebElement DeleteElement
{
get
{
var elements = Driver.FindElements(DeleteSelector);
foreach (var element in elements.Where(e => e.Displayed))
{
return element;
}
Assert.Fail("Could not locate a visible Delete Element");
return null;
}
}
}
セレンテストは遅いので、おそらくこのコードは実行時間を1%も増やさないでしょう...私はあなたのコードの可読性を心配しています。特定のリンクまたは非表示の削除リンクを探していますか?もし特定のものがあれば、Idによって見つける方が良いでしょう。リンクがあれば、そのプロパティの名前がわかります。 –
1%であっても、これを複数回呼び出すと雪だるま効果が生成されます。次のことは、数分ではなく数時間かかるビルドがあることを知っていることです。 –
同じテストでこのメソッドを100回呼び出しても、サーバーが1ページをレンダリングするのに要する時間はほんのわずかです。ビルド時間を改善するには、実際に時間がかかる部品を測定して最適化します。この方法はそれではありません。 –