2017-09-13 71 views
0

下面我有三个潜水标记,都具有相同的类:如何正确使用FindElements命令?

<div class="confirmation-price-summary__price-label confirmation-price-summary__price-label--with-dropdown">(2) Seats</div> 

<div class="confirmation-price-summary__price-label confirmation-price-summary__price-label--with-dropdown">(2) Meals</div> 


<div class="confirmation-price-summary__price-label confirmation-price-summary__price-label--with-dropdown firefinder-match">(1) Extra Baggage</div> 

我创建了一个变量通过XPath来指向所有这些类的元素在我的'confirmationResponsiveElements.cs页面:

public static By TravelEssentialsBasketLabels => By.XPath("//*[@class='confirmation-price-summary__price-label confirmation-price-summary__price-label--with-dropdown']"); 

我想使用'FindElements'方法来查找所有这些元素,然后声明它们包含'座位','膳食'和'额外行李'。但是我不知道如何正确地使用这个,因为它是给我死亡的红线:

public void TravelEssentialsLabelsSideBasket() 
    => _driver.FindElements(ConfirmationResponsiveElements.TravelEssentialsBasketLabels).ToString(); 

什么是使用FindElements的corret途径,也是,怎么能如果我要检查Assert.IsTrue应该写成它包含'座位','餐食'和'额外行李'?

感谢

+0

什么'_driver'的类型?如果它是'IWebDriver'接口,那么你没有这些方法(你可以直接使用'RemoteWebDriver')。 –

+0

findElements返回web元素的列表。所以你必须迭代每个元素并使用GetText方法。获取每个元素的值并将其与期望值进行比较。 – Murthi

+0

@Murthi你能举一个例子说明如何做到这一点吗? – BruceyBandit

回答

0
List<string> actualoptions = new List<string>(); 
List<string> expectedoptions = new List<string>(); 

expectedoptions.Add("Seats"); 
expectedoptions.Add("Meals"); 
expectedoptions.Add("Extra Baggage"); 

ReadOnlyCollection<IWebElement> links = driver.FindElements(By.XPath("//*[@class='confirmation-price-summary__price-label confirmation-price-summary__price-label--with-dropdown']")); 

foreach(IWebElement link in links) 
{ 
    string text = link.Text; 
    actualoptions.Add(text); 
} 

//then you compare this list with expected value 
if(String.SequenceEqual(actualoptions ,expectedoptions)){ 
    console.write("matching"); 
else 
    console.write("not matching"); 
相关问题