select
HTML öğeleri (yani DROPDOWNS) için özel olarak oluşturulmuş bir sınıfı vardır.
O OpenQA.Selenium.Support.UI isim alanı içinde SelectElement sınıftır.
Bu, kullanıcıların select
öğesinde kullandıkları/etkileşim kurdukları ortak şeylere kolay erişim sağlayan, select
öğelerinin etrafındaki sarıcıdır.
Kişisel örneği (Ben LINQ kullanıyorum, çünkü yukarıdaki C# 3 veya kullanarak) çevrilmesi söz konusuydu:
IList<IWebElement> selectElements = driver.FindElements(By.TagName("select"));
var displayedSelectElements = selectElements.Where(se => se.Displayed);
Bu kod ne yaptığını bilmek önemlidir. İlk olarak tümselect
öğelerini bulur ve bunları yeni bir listeye yerleştirir.
Daha sonra görüntülenir sadece select
elemanlarına, bu filtreleyecektir.END_ITEMEND_UNORDERED_LIST, bu onların .Displayed
mülkiyet gerçek olduğunu vardır. Bu, örnek kodunuzun doğrudan çevirisi.
Ancak, gerçekten ne yapmaya çalışıyorsun ne belirtilmemiş ettik ve örnek olarak bu daha uygun olur:
var selectElement = new SelectElement(driver.FindElement(By.Id("something")));
var displayedOptions = selectElement.Options.Where(o => o.Displayed);
üstünde bir belirliselect
unsurları bulacağını ve filtre içindeki seçenekleri select
sadece görüntülenenler içindir. Yine gerçek olarak .Displayed
özelliğine sahipler.
Yukarıdaki kod yana Düzenleme
ne ihtiyaç vardır, ancak bir for
döngü şeklinde benzer bir şey gibi görünür istiyorum: ReadOnlyCollection döndüren
var selectElement = new SelectElement(driver.FindElement(By.Id("something")));
var allOptions = selectElement.Options;
for (int i = 0; i < allOptions.Length; i++)
{
if (allOptions[i].Displayed)
{
// do something
// like add to a new list?
}
}
kullanın. Teşekkürler. – jessica
Ancak foreach yerine C# için aynı formatı kullanabilir miyim? – jessica
@jessica, kesinlikle yayınlamamı - açıkça belirtilmemişse bana bildirin. – Arran