Selenium c#wait.until(expectedconditions)...函数无法在屏幕上查找对象/元素

时间:2016-08-05 14:00:36

标签: c# selenium-webdriver wait

我不熟悉使用selenium Webdriver并撰写c#。我在脚本中使用了很多thread.sleep()命令来确保Selenium没有尝试点击太快。通过大量的研究,我发现这是不受欢迎的,并且有更好的"方法,所以我开始使用: -

wait.Until(ExpectedConditions.ElementToBeClickable(By.Id("FieldId")));

等待在另一个类中定义为: -

wait = new WebDriverWait(driver, new TimeSpan(0, 0, 0, 10));

我只能在没有得到的情况下运行脚本2/10次才能工作:

  

没有这样的元素异常:找不到元素......

我已经停止使用thread.sleep了很多这个问题的例子。经过大量的研究后,我总是发现这是建议的方式,但似乎完全不可靠。我错过了什么吗?该元素在2秒后始终存在,并且在10秒过去之前发生错误。我已经阅读了至少10篇其他听起来相似的帖子,但没有一个有解决方案有效......除了Thread.Sleep(5000)

1 个答案:

答案 0 :(得分:2)

尝试在创建服务器后将NoSuchElementException类型添加到服务器的IgnoreExceptionTypes。

public partial class Form2 : Form
{
    Form1 Form_1;
    public Form2()
    {
        InitializeComponent();

        Form_1 = Application.OpenForms["Form1"] as Form1;
    }

    private void BookSetupForm_Load(object sender, EventArgs e)
    {
        // access here your transfer object
        this.comboBox1.DataSource = Form_1.comboTransfer.Items;
    }
}

一般情况下,如果服务员在超时之前返回您指示已过期,那是因为发生了当前未被忽略的异常。

WebDriverWait类派生自DefaultWait类。您可以在github上查看这两个内容,我发现这对理解如何使用它非常有帮助。