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

如何在Selenium中等待表单提交答案?

周高畅
2023-03-14

我有一个Selenium测试,在测试中,我点击了一个表单中的submit按钮,如下所示:

WebElement form = someContainerElement.findElement(By.cssSelector("form"));
form.submit():

接下来,我通过再次调用相同的url手动刷新页面,如下所示:

String url = customFunctionToBuildUrlFromPath("some/custom/page");
webDriver.get(url);

顺便说一下,webDriver的类型是< code>RemoteWebDriver。接下来,我将测试一些web元素,例如它们是否存在。本地一切正常。在gitlab Pipleine上没有。在管道上,只有当我添加< code>Thread.sleep(3000) 时,它才起作用。它也在管道上起作用。

所以我想我必须等到服务器处理了post请求。在本地,它足够快,但gitlab Runner不够快。

➡️:所以我需要等到服务器发送post请求的应答,或者至少页面被刷新。在Selenium中,如何等待表单提交的答案?

我尝试使用WebDriver等等,它似乎没有像WebDriverWait.until(页面刷新)

共有1个答案

刘和昶
2023-03-14

看起来这是selenium尝试但无法提供的功能,因为它非常依赖于站点的实际实现。因为这个问题对你来说有很好的解决方案。就个人而言,我会首先尝试jimevans的解决方案

 类似资料:
  • 我使用Python3和Selenium firefox提交一个表单,然后获取它们登陆的URL。我是这样做的 这在大多数情况下都有效,但有时页面加载时间超过5秒,我会得到旧的URL,因为新的URL还没有加载。 我应该怎么做?

  • 问题内容: 表单在validateUsername函数之前提交时遇到问题,有机会在服务器端完成用户名检查。 仅在validateUsername函数完成后才如何提交表单?希望这很清楚… 问题答案: Olafur答案的更详细的版本-进行AJAX调用,函数无需等待就返回。 提交表单之前,回调不会结束。 您应该做的是让按钮/触发调用AJAX验证,并且回调应该提交表单而不是返回true。

  • 这是我的servlet的doPost方法,理论上它在db中添加数据 这里是在db中插入数据的方法 但是,当我尝试使用servlet执行此操作时,出现了以下错误 错误1205(HY000):超出锁定等待超时; 有人知道如何解决?如果我对一个普通的java类做同样的事情,那么一切都很好。

  • 我正在尝试在使用VueJs的单页应用程序中开发一个自动化测试,当我单击注册按钮时,页面加载了一个包含元素的表单,但是由于元素根据需要加载,它们不会自动出现在那里,我可以解决在单击注册按钮后放置driver.sleep的问题,但我正在寻找一种解决方法,我尝试了InluductEts和elisEnabled,但我无法得到结果,在这里检查我的代码: const { Builder, By, Key, 直

  • 问题内容: 我只是想知道,如何让浏览器在单击链接之前等待?我的目标是从动态网页抓取内容,内容是动态的,但我设法获取表单ID。唯一的问题是,提交按钮仅在2-3秒后显示。但是,我的Firefox驱动程序在页面加载后立即开始单击链接(不是动态部分)。 有什么办法可以让我的浏览器等待2-3秒,直到出现提交按钮?我尝试使用它,但是它暂停了所有操作,提交按钮在显示期间没有出现,但是在2-3秒后显示。 问题答案

  • 我只是想知道,如何在点击链接之前让浏览器等待?我的目标是我从一个动态网页抓取,内容是动态的,但我设法得到表单ID。唯一的问题是提交按钮仅在2-3秒后显示。但是,我的Firefox驱动程序在加载页面(不是动态部分)时立即开始单击链接。 有没有办法让我的浏览器等待2-3秒,直到提交按钮出现?我试图使用但它暂停了一切,提交按钮在期间没有出现,而是在结束时在2-3秒后出现。