我有一個網頁上的記錄集合,並且當單擊一條記錄時,會顯示一個'Delete'鏈接(實際上是'unhidden',因爲它實際上總是存在) 。只使用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。如果有任何鏈接,我會爲該物業找到更好的名稱。 – 2012-04-17 05:51:45
即使它只有1%,當你多次調用它時,它也會產生雪球效應。接下來的事情你知道你有一個需要幾小時而不是幾分鐘的構建。 – 2012-04-17 06:00:38
即使您在同一測試中調用此方法100次,它可能只需要您的服務器渲染一頁所需的時間的一小部分。爲了縮短構建時間,測量和優化實際需要很長時間的部件。這種方法不會。 – 2012-04-17 06:27:41