我正在使用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方法更快地抛出异常。不知道该怎么做。它通常需要一分钟左右才能抛出。
想法?
答案 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;
}