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 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。