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

Java Selenium 3.3.1和geckodriver 0.15.0不在windows 10上等待

微生弘
2023-03-14

还有人对上面有问题吗?我似乎无法让geckodriver隐式或显式地等待。它只在我使用thread.sleep()时工作

下面是我的显式方法,它在ChromeDriver的整个代码库中都很好地工作:

public void waitForPageLoad(WebDriver driver) throws MyTestException {
    try { new WebDriverWait(driver, page_timeout).until((ExpectedCondition<Boolean>) wd ->
        ((JavascriptExecutor) wd).executeScript("return document.readyState").equals("complete"));
        } catch (Exception e){logger.warning("Waiting for page load failed.");}
}
else if (config.useFirefox()) { 

            String geckoDriverLocation = config.getProperty("qa.webdriverpath") + "geckodriver.exe";
            System.setProperty("webdriver.gecko.driver", geckoDriverLocation);
            driver = new FirefoxDriver();
            driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
            //DesiredCapabilities dc = DesiredCapabilities.firefox();
        } 
    WebElement emailText = test.getDriver().findElement(By.name("email"));
    WebElement passText = test.getDriver().findElement(By.name("password"));
    WebElement loginButton = test.getDriver().findElement(By.xpath("//input[@type='submit']"));
    test.getLogger().info("Logging in as user " + user.contact.getName() + " (" + user.getEmail() + ")...");
    emailText.clear();
    emailText.click();
    emailText.sendKeys(user.getEmail());
    emailText.sendKeys(Keys.TAB);

    passText.clear();
    passText.sendKeys(user.getPassword());
    passText.sendKeys(Keys.TAB);

    loginButton.click();

    //try{Thread.sleep(3000);}catch(Exception e){}
    test.waitForPageLoad(test.getDriver());

共有1个答案

闾丘正志
2023-03-14

我在selenium 3.3.1、geckodriver 0.15.0和Firefox 52.0.2中也遇到了同样的问题。隐式等待不起作用。解决办法是继续增加睡眠,但这是不好的。我发现这个bug已经引发https://github.com/mozilla/geckodriver/issues/308

 类似资料:
  • 问题内容: 我正在使用和。 我能够正确安装,但无法启动默认VM。 我试图按照此处给出的说明进行操作,但仍然出现错误。我尚未在系统上启用。 我该如何解决这个问题? 问题答案: 您的docker-machine默认计算机似乎发生了一些问题。 要恢复,请执行以下操作: 接下来,打开virtualbox GUI并确保没有与该旧“默认” VM相对应的VM,以防万一。如果有,请从那里手动将其删除。 现在,再次

  • 问题内容: 我一直这样做: 但我意识到这也是正确的。 Double 仍然可以使用,并且一直为我工作,但是每当我搜索PHP运算符时,都找不到关于double的信息,因此我认为我一直做错了,但是无论如何它都可以工作。我应该改变我的所有来只是为了它的缘故? 问题答案: 并且不考虑您比较的变量的数据类型。因此,这些都将返回true: 并且 也 考虑到数据类型。这意味着将字符串与布尔值进行比较 永远不会 是

  • 我想在Windows10中的gpu上运行我的代码,就像GoogleColab一样,我们可以改变运行时选项,这很容易转换到gpu。是否有可能在windows中对jupyter笔记本进行同样的操作。

  • 我知道这个问题和下面的问题是重复的。 我打开了许多选项卡,但结果getWindowHandles()总是返回1。

  • 版本: > geckodriver 0.26.0(路径内环境变量) 硒3.141.0 火狐75.0 python 3.8.2 Windows 10 当我尝试: 我明白了: 当我尝试时: 我明白了: IEDriver适用于IE 我有Windows Visual Studio安装https://github.com/mozilla/geckodriver/releases指示我应该。 我能做些什么来实

  • 在Windows10中输入以下命令并启动无头chrome版本时,没有发生任何事情(有/没有扩展): 它只是悄悄地返回到命令行,我找不到任何pdf文件。 有人遇到过同样的问题并设法解决了吗? 我正在使用:Google Chrome 63.0.3239.84(官方版本)(64位)(队列:63_Win_84)