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

Selenium Java查找项,直到页面加载

阎乐池
2023-03-14

我有这样的代码

WebDriver driver = new FirefoxDriver();
driver.get(something URL);
WebDriverWait waiting = new WebDriverWait(driver, 10, 1000);
WebElement element = waiting.until(ExpectedConditions.presenceOfElementLocated(By.id(my_id)));//problem is here

但之后我尝试在页面上查找元素,WebDriverWait会一直等到页面完全加载,然后开始搜索。如果我尝试这样的事情

WebDriverWait waiting = new WebDriverWait(driver, 10, 2700);
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
WebElement element;
            try {
                driver.get(something_url);
            } catch (TimeoutException e) {
                ((JavascriptExecutor) driver).executeScript("window.stop();");

            }finally {
                element = waiting.until(ExpectedConditions.presenceOfElementLocated(By.id(my_id)));
            }
element.click();//go to another page

共有1个答案

东郭子默
2023-03-14

解决方案是在此页面上等待ajax刷新完成:

public void waitForAjaxRefresh() {
       System.out.println("Waiting for Ajax Refresh");
        try {
            WebDriverWait wait = new WebDriverWait(driver,35);
            final JavascriptExecutor javascript = (JavascriptExecutor) (driver instanceof JavascriptExecutor ? driver
                    : null);

            wait.until(new ExpectedCondition<Boolean>() {
                @Override
                public Boolean apply(WebDriver d) {
                    boolean outcome = Boolean.parseBoolean(javascript
                            .executeScript("return jQuery.active == 0")
                            .toString());
                    return outcome;
                }
            });
        } catch (TimeoutException ex) {
            throw new TimeoutException("Timed out after "
                    + 35
                    + " seconds while waiting for Ajax to complete.");
        } catch (WebDriverException e) {
            System.out.println("JQuery libraries are not present on page "
                    + driver.getCurrentUrl() + " - "
                    + driver.getTitle());
        }
    }
 类似资料:
  • 想象有一个页面在说http://google.com/AddUser在这里输入记录的详细信息,然后单击保存。完成此操作后,页面将重定向到 http://google.com/userList 您可以在其中查看用户列表,包括您刚刚输入的新记录。 如果我们按照页面对象模型,那么在和验证记录是否实际保存和显示的方法应该在 如果我们认为addUser和userList是两个类的对应对象,它会像下面这样:

  • 我试图使用Xpath立即从活动元素获取数据,但当我运行该项目时,我遇到了这个错误 线程“main”组织中出现异常。openqa。硒。StaleElementReferenceException:stale元素引用:元素未附加到页面文档

  • 问题内容: 我的网站上有一个版块,在进行一些密集的通话时加载速度很慢。 知道如何div在页面准备时显示类似于“加载”的内容,然后在一切准备就绪时消失吗? 问题答案: 我需要这个,经过一番研究,我想到了这个(需要jQuery): 首先,在标签之后添加以下代码: 然后将div和图片的样式类添加到CSS: 然后,将此JavaScript添加到您的页面中(当然,最好在页面结尾处,在结束

  • 问题内容: 我想向用户显示一个加载图标,直到页面元素完全加载为止。如何使用javascript做到这一点,而我想使用javascript而不是jquery做到这一点? 这是一个链接,谷歌是怎么做到的?在onload事件或类似事件上触发某些功能..我知道它会以这种方式或任何其他方式完成?还是有一些事件吗? 更新 我使用显示属性做了一些操作,我隐藏了body元素,但是body标签的onload更改了它

  • 我是Spring的新手,试图在Spring和primeface之间进行整合。添加和后,在tomcat上运行项目时,我得到404页没有找到。我的web.xml档案: 这是我的faces-config.xml文件: 下面是我的控制器类: 我试图在网上找到解决方案,但我感到困惑,因为大多数示例都使用JSP。请指出问题所在,我正在连接github链接。

  • 如何让代码等待页面在Nodejs中完全加载?我使用SeleniumWebDriver版本4.0。0