woodyy 2023-04-03 19:35 采纳率: 50%
浏览 51
已结题

c#的Selenium的显示等待,不起效果

img


一,如果普通的获取元素,是没问题的(这个说明是配置没问题的吧)。
二,我故意写了个“n个a”的不存在的元素,测试显示等待,设置的时间是180秒,可是刚不到10秒就报错,找不到元素。
查了很多资料也都没解决,谢谢呀。

img


是不是这些问题导致的,我运行起来有这个报错。

  • 写回答

4条回答 默认 最新

  • zhaotianff 2023-04-04 12:01
    关注

    我看了一下WebDriver的源码,可以看到,如果未找到元素,会抛出一个 NoSuchElementException

    internal IWebElement GetElementFromResponse(Response response)
    {
        if (response == null)
        {
            throw new NoSuchElementException();
        }
        WebElement element = null;
        Dictionary<string, object> elementDictionary = response.Value as Dictionary<string, object>;
        if (elementDictionary > null)
        {
            element = this.elementFactory.CreateElement(elementDictionary);
        }
        return element;
    }
    

    再看到Until的源码

    public virtual TResult Until<TResult>(Func<T, TResult> condition, CancellationToken token)
            {
                ....
                while (true)
                {
                    try
                    {
                        TResult val = condition(input);
                        ...
                    }
                    catch (Exception ex)
                    {
                        if (!IsIgnoredException(ex))
                        {
                            throw;
                        }
    
                        lastException = ex;
                    }
                    ...
                }
            }
    

    这里这个IsIgnoredException就会忽略你在wait.IgnoreExceptionTypes函数添加的异常类型。

    所以你这里显示这个异常,不是程序报错,是Visual Studio调试工具的提醒。

    我将测试代码改成如下:

    wait.IgnoreExceptionTypes(typeof(NoSuchElementException));
                try
                {
                    var ele = wait.Until(bb =>
                    bb.FindElement(By.Id("aaaaaaaaaa"))
                );
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
    

    直接运行编译后的程序,只会收到一个超时的错误,并不会收到NoSuchElementException的错误

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月13日
  • 已采纳回答 4月5日
  • 修改了问题 4月3日
  • 创建了问题 4月3日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么