当前位置: 首页 > 面试题库 >

我如何要求Selenium-WebDriver在sendkey之后等待几秒钟?

刘星火
2023-03-14
问题内容

我正在使用C#Selenium-WebDriver。发送密钥后,我要等待几秒钟。我执行以下代码以等待2秒钟。

public static void press(params string[] keys)
{
       foreach (string key in keys) 
       { 
          WebDriver.SwitchTo().ActiveElement().SendKeys(key);
          Thread.Sleep(TimeSpan.FromSeconds(2));
       }
}

我这样打电话:

press(Keys.Tab, Keys.Tab, Keys.Tab);

它工作正常。哪一个是更好的方法?


问题答案:

我会不惜一切代价避免使用这样的方法,因为它会减慢测试速度,但是我遇到了我没有其他选择的情况。

public void Wait(double delay, double interval)
{
    // Causes the WebDriver to wait for at least a fixed delay
    var now = DateTime.Now;
    var wait = new WebDriverWait(myWebDriver, TimeSpan.FromMilliseconds(delay));
    wait.PollingInterval = TimeSpan.FromMilliseconds(interval);
    wait.Until(wd=> (DateTime.Now - now) - TimeSpan.FromMilliseconds(delay) > TimeSpan.Zero);
}

总是最好以某种方式观察DOM,例如:

public void Wait(Func<IWebDriver, bool> condition, double delay)
{
    var ignoredExceptions = new List<Type>() { typeof(StaleElementReferenceException) };
    var wait = new WebDriverWait(myWebDriver, TimeSpan.FromMilliseconds(delay)));
    wait.IgnoreExceptionTypes(ignoredExceptions.ToArray());
    wait.Until(condition);
}

public void SelectionIsDoneDisplayingThings()
{
    Wait(driver => driver.FindElements(By.ClassName("selection")).All(x => x.Displayed), 250);
}


 类似资料:
  • 问题内容: 我正在研究Java Selenium-WebDriver。我加了 和 因为我的应用程序需要几秒钟来加载用户界面。所以我设置了2秒的隐式等待。但是我找不到元素文本框 然后我添加 现在工作正常。哪一个是更好的方法? 问题答案: 好吧,有两种类型的等待:显式和隐式等待。显式等待的想法是 隐式等待的概念是 你可以在此处获得细节上的差异。 在这种情况下,我宁愿使用显式等待(尤其是): 函数返回找

  • 我在做一个JavaSelenium-WebDriver 和 因为我的应用程序只需几秒钟就能加载用户界面。所以我设定了2秒的等待时间。但我找不到元素文本框 然后我添加

  • 我正在为基于角度的应用程序创建测试,我需要帮助。我必须创建一个等待,这将等待,直到所有挂起的请求将被处理。基本上,在我的场景中,我希望标记一个复选框,但它只有在GET请求完成时才可用,如果我使用简单的,一切都很好,但我知道这不是解决这个问题的可靠方法。我尝试了两种方法: 我也试过: 15秒后超时,似乎不起作用。请帮助,如果你可以,据我所知,我需要执行JavaScript代码,我是新手在它。

  • 问题内容: 是的,我知道这个问题经常被问到,但是我还是不明白。我想让Selenium等待,无论如何。我尝试了这些方法 和其他东西,但它不起作用。我需要selenium才能等待10秒。 NO 直到一些元素被加载或什么,只是等待10秒。我知道有这个 我不要那个 。 如果要花几秒钟(无法实现)等待selenium,那么其他(python)库/程序将能够完成此任务?使用Java Selenium似乎没有问

  • 我有一个打开浏览器的ruby脚本。我把它设置为先打开Firefox,然后再打开Chrome,如果FF因为某种原因失败了,比如FF得到了更新,Selenium还没有赶上。 等待函数/定义对FF很好,但总是中断。以下是Chrome浏览器启动的相关代码: 我对Selenium还是相当陌生,我使用了等待。在声明如下内容后,直到命令: 以上代码行在Firefox中运行良好。但是,我想用FF和Chrome运行

  • 我尝试遵循return((JavascriptExecutor)driver.executescript(“return document.readystate”).equals(“complete”); 但它不起作用 基本上,上面的命令不能识别以下操作[testng]1535139249496 addons.productaddons信息发送请求到:https://aus5.mozilla.or