当前位置: 首页 > 知识库问答 >
问题:

Selenium脚本在显式wait中定义的时间内等待的时间不够长

糜正业
2023-03-14

我正在使用TestNG框架编写一个selenium脚本。我已经将显式等待定义为在selenium抛出NoSuchElement异常之前的20秒。但脚本在执行过程中没有等待20秒,并在41毫秒内抛出异常。我希望这个脚本在抛出任何异常之前等待(使用显式的wait only)或搜索web元素20秒。

下面是脚本,后面是执行结果。

public class para {
WebDriver driver;

@BeforeClass
void InvokeFF() {
    System.setProperty("webdriver.gecko.driver",
            "C:/Users/Vinay/workspace_n/EGuru/drivers/geckodriver.exe");
    driver = new FirefoxDriver();
    // driver.get("http://seleniumpractise.blogspot.in/2016/08/bootstrap-dropdown-example-for-selenium.html");
    System.out.println("Firefox invoked");
    System.out.println("Firefox thread:" + Thread.currentThread().getId());

}

@Test
void Auto() throws Exception {
    WebDriverWait wait = new WebDriverWait(driver, 20);
    driver.get("file:///C:/Users/Vinay/Desktop/Upload1.html");
    WebElement elem = driver.findElement(By.xpath(".//*[@id='1']"));
    wait.until(ExpectedConditions.visibilityOfElementLocated(By
            .xpath(".//*[@id='1']")));
    elem.click();
    Runtime.getRuntime().exec("C:\\Users\\Vinay\\Desktop\\AutoUpload.exe");
}

共有1个答案

公西马鲁
2023-03-14
WebElement elem = driver.findElement(By.xpath(".//*[@id='1']"));
wait.until(ExpectedConditions.visibilityOfElementLocated(By
        .xpath(".//*[@id='1']")));

以上两行需要按顺序颠倒。您尝试在不等待的情况下获取元素,然后告诉webdriver等待它的存在。

 类似资料:
  • 我正在尝试编写一个依赖于selenium中最后一个事件的事件序列。首先点击登录,加载一个新的页面,然后点击页面上的滚动框,然后点击滚动框内的按钮,直到滚动框被点击才会被加载。 我试图停止使用time.sleep(x),因为我读到这是不好的做法,我试图了解更多关于硒如何工作的信息。 我得到的不起作用的代码是 我能让它工作的唯一方法是在之前放一个。根据我的理解,网络驱动程序的等待和预期条件应该会否定我

  • 问题内容: 我目前正在研究Java硒项目,该项目通常是一个小脚本,在该脚本中,我必须检查每个元素是否存在,并基于该操作触发了一些操作,但我们主要关心的是完成脚本的持续时间。 基本上,我在脚本中使用了下面的每个脚本并进行了测试,尽管在每种情况下脚本都在运行,但是我发现脚本执行持续时间的速度提高很少。 和它一起 要么 我知道我可以使用CSS选择器,但由于DOM Tree结构的原因,这是不可行的。什么可

  • Selenium C#在抛出超时异常之前等待的最大显式超时是多少? 有时我们正在测试的应用程序变得非常慢,最多需要4分钟才能加载。我想添加一个等待时间,这样它最多会等待5分钟。 我已经尝试过这个代码 但是它在2分钟左右抛出超时异常。

  • 之前介绍过的所有阻塞调用,将会阻塞一段不确定的时间,将线程挂起直到等待的事件发生。在很多情况下,这样的方式很不错,但是在其他一些情况下,你就需要限制一下线程等待的时间了。这允许你发送一些类似“我还存活”的信息,无论是对交互式用户,或是其他进程,亦或当用户放弃等待,你可以按下“取消”键直接终止等待。 介绍两种可能是你希望指定的超时方式:一种是“时延”的超时方式,另一种是“绝对”超时方式。第一种方式,

  • 问题内容: Selenium WebDriver中有隐式和显式等待。它们之间有什么区别? 请分享有关Selenium WebDriver的知识。请显示带有隐式和显式等待的实时示例。 问题答案: 检查以下链接: -通过轮询DOM来指示Web驱动程序等待一段时间。声明隐式等待后,它将在Web驱动程序实例的整个生命周期中都可用。默认情况下,该值将为0。如果设置了更长的默认值,则该行为将根据浏览器/驱动程

  • 问题内容: 我在用: 但是对于以下元素它仍然连续失败 我添加了等待代码: 隐式等待是否应该等到找到一个元素后再进行处理?如果我使用而不是我添加的代码,还会更好吗? 问题答案: TL; DR:始终使用显式等待。忘记隐式等待的存在。 以下是显式等待与隐式等待之间的区别的简要概述: 显式等待: 记录和定义的行为。 在硒的本地部分运行(以你的代码语言显示)。 可以在你能想到的任何条件下工作。 返回成功或超