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

在硒网络驱动程序中显式触发页面负载阻止

鱼旺
2023-03-14

我知道顶级webdriver API不提供对页面加载事件处理程序的访问,但是否有任何方法(包括通过REST接口直接向服务器发送命令)直接调用selenium服务器以强制页面加载块行为?我知道等待元素破解,但如果可能的话,我宁愿直接去源代码。我遇到的一个具体问题是,当点击一个按钮时,页面会发出一个JS调用,当一些后端进程发生时,该按钮会在页面上显示一个模式对话框,然后在后端工作完成后将浏览器转发到一个新页面。由于点击操作不会直接触发新页面,selenium不会阻止事件(无论如何,我不希望它在所有情况下都会这样)。

我已经在 Command 类中查找了任何有前途的命令,但没有看到任何内容。我找到了 http://code.google.com/p/selenium/wiki/JsonWireProtocol 但它也没有帮助...

共有1个答案

仉联
2023-03-14

这是一个棘手的问题。

在selenium/webdriver中访问http状态不是很方便。我会推荐一种务实的方式。在我看来,等待元素的方法不是黑客,而是正确的做法。在您的情况下,我会等待selenium.getLocation()或webdriver.getCurrentUrl()包含一个预期值。

像这样:

webDriverWait.until(new Function<WebDriver, WebElement>() {
    @Override
    public WebElement apply(WebDriver driver) {
        //TODO: pass expected url as parameter
        boolean expectedUrl = driver.getCurrentUrl().contains("your redirect url");
        if (expectedUrl) {
            //If not null is returned, we have found something and waitUntil stops
            return new RemoteWebElement();
        }
        //try again
        return null;
    }
});
 类似资料:
  • 正在研究尝试理解显式等待的方法。 所以单选按钮被点击后,输入形式发生了变化,所以我把给它一个时间元素出现,否则会出错“元素不可见......”。所以我认为现在是理解显式等待的好时机,因为我需要等到元素出现。 但出现错误“Selenium::WebDriver::error::ElementNotVisibleError:Element当前不可见,因此可能无法与之交互”。为什么这段代码不等到元素出现

  • 我查了一下,我怎么能默默地运行硒:在这里找到了下一个伟大的答案 我正在尝试让selenium正常运行,直到一些操作完成,然后在后台运行它。 有可能吗? 高级Oz中的thanx

  • 我的目标是使用硒为Python自动在线账单支付。 使用以下代码使用 Web 驱动程序登录成功: 登录后,一个新的页面加载,我的下一步是点击一个链接。代码: 什么也没发生。没有导航到该法案 但仍然没有。我还应该尝试其他什么? 错误: Traceback(最近调用的最后一次):File"/home/队长/. PyCharmEdu30/config/划痕/scratch_1.py",第12行,在clic

  • 我在eclipse中使用SeleniumWebDriver和TestNG。问题是页面在某些数据的中途重新登录,并且重新加载的时间是灵活的,这就是为什么我不能应用显式等待时间。我想让webdriver等待,直到重新加载完成。 我正在尝试通过此代码执行此操作……但它不起作用。

  • 我有一个问题,上传文件到网络系统使用硒驱动程序。所以在我的页面上,我没有任何输入来设置文件路径,而且我在网络上找到的大多数解决方案都不适合我。我必须点击上传文件按钮,然后在窗口对话框中设置文件的路径。我找到了winforms SendKeys类中使用的方法: 它的工作,但只有当测试有完全控制的机器(如果没有-路径已发送到某处不对话)。这就是问题所在,因为我无法完全控制运行测试的机器。你知道不使用S

  • 下面是我为firefox浏览器初始化的selenium web驱动程序。 尽管我给出了隐式等待,但我没有等待元素。它会立即抛出not found异常。如果我放那么它工作正常,没有任何问题。但是把现在测试用例包含更多线程的任何地方。sleep比实际的测试用例代码低。有人能给我建议正确的方法吗?