Selenium to click on an app name in a filter tool

2020-05-02 05:03发布

问题:

I have another requirement like this in my c# selenium application. Since there are so many content in my webpage table, it will be quite nice to sort it based on the app name. I have content like this:

Description     App Name    Information
Some Desc1       App1         Some Info
Some Desc2       App2         Some Info
Some Desc3       App2         Some Info
Some Desc4       App3         Some Info
Some Desc5       App4         Some Info

And next to App Name, I have a sort button which lists the app names.I can click on the sort button and I could view all those app names.But I cant click on a particular app name, which I needed.

I have tried some thing like this:

var elems = driver.FindElements(By.TagName("SPAN")); //SPAN is the only attribute I could see and it is also unique for all the app names provided in the list. So, used driver.FindElements
IList<IWebElement> list = elems; //Converts it as a list
var elem= list.Equals(text); // text represents an app name provided by the user in a textbox at the start of the application. Storing that appname into a variable elem.
string targetele = elem.ToString(); //Converting it into a string
if (list.Equals(text))
{
   driver.FindElement(By.Name(targetele)).Click(); //Click on a particular app name to filter
}

回答1:

First of all, HTML code is far more concise than showing the business model in order to illustrate your problem. Please post it if possible.

Now for this question, what you are trying to do exactly? I can only make comments based on the code you provided.

// are you sure want to get all spans? This will get you lots more unrelated ones
// please try use xpath or css selector to only get the ones related
IList<IWebElement> spanList = driver.FindElements(By.TagName("span"));

// now you want loop through each of them, check if text == App4 as an example
foreach (IWebElement span in spanList) {
    if (span.Text == "App4") {
        // click the span with text App4
        span.Click(); // not sure what you want to click here, please clarify
    }
}

// version using Linq
// spanList.First(span => span.Text == "App4").Click();