Selenium:更快地检查选择选项。 C#

时间:2017-05-12 14:38:42

标签: c# selenium selenium-webdriver selenium-chromedriver

我正在使用selenium来自动执行一些数据输入任务。

我遇到的问题:
我需要检查select(下拉列表)是否有选项,如果是,请选择它,否则继续。 选择有大约200个选项,我认为不是很多,但似乎需要很长时间才能通过列表,我想知道如何加快速度。

我假设它与列表所包含的对象类型有关? (IWebElement列表) 尝试了一个基本的for循环,以及在列表中使用.Any方法,两者看起来同样异常缓慢。

SelectElement brokeragePayeeOfficeSelect = new SelectElement(webDriver.FindElement(By.Id("ContentPlaceHolder1_ddBrokeragePayee")));
IList<IWebElement> officeOptions = brokeragePayeeOfficeSelect.Options;
bool result = officeOptions.Any(o => o.Text == brokerageOfficeArray[i]);
if (result)
{
     brokeragePayeeOfficeSelect.SelectByText(brokerageOfficeArray[i]);
}
else
{
    Console.WriteLine("Missing:" + brokerageOfficeArray[i]);
    continue;
}

另一个选项是使SelectElement.SelectByText方法更快地抛出异常。不知道该怎么做。它通常需要一分钟左右才能抛出。

想法?

1 个答案:

答案 0 :(得分:1)

使用Any进行迭代以检查选项是否存在相当昂贵。而是尝试选择该选项并捕获异常:

var brokeragePayeeOfficeSelect = new SelectElement(webDriver.FindElement(By.Id("ContentPlaceHolder1_ddBrokeragePayee")));

try {

    brokeragePayeeOfficeSelect.SelectByText(brokerageOfficeArray[i]);

} catch (NoSuchElementException) {

    Console.WriteLine("Missing:" + brokerageOfficeArray[i]);
    continue;
}