Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使SeleniumWebDriver脚本等待后端api请求返回响应?_Java_Selenium_Selenium Webdriver - Fatal编程技术网

Java 如何使SeleniumWebDriver脚本等待后端api请求返回响应?

Java 如何使SeleniumWebDriver脚本等待后端api请求返回响应?,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我正在尝试使用SeleniumWebDriver+Java+ngwebdriver自动化混合AngularJS2(2.4.10)web应用程序 考虑一个简单的例子,自动化一个基本的登录脚本。 在登录页面中,我使用sendkeys填写用户名和密码字段,然后单击“方法”点击“提交”按钮,然后我断言主页标题。脚本平稳运行并退出驱动程序实例 但当脚本点击submit按钮时,在后端会发出一个api调用,并且还没有收到响应 从前端实现了测试自动化,但用户登录方法没有返回响应 所以我想让我的SeleniumW

我正在尝试使用SeleniumWebDriver+Java+ngwebdriver自动化混合AngularJS2(2.4.10)web应用程序

考虑一个简单的例子,自动化一个基本的登录脚本。 在登录页面中,我使用sendkeys填写用户名和密码字段,然后单击“方法”点击“提交”按钮,然后我断言主页标题。脚本平稳运行并退出驱动程序实例

但当脚本点击submit按钮时,在后端会发出一个api调用,并且还没有收到响应

从前端实现了测试自动化,但用户登录方法没有返回响应


所以我想让我的SeleniumWebDriver脚本等待所有后端api请求返回响应,然后进入下一步?有可能吗

使用以下代码等待,直到使用ngWebDriver满足请求,如下所示:

ngWebDriver.waitForAngularRequestsToFinish();

然后使用任何显式等待方法来检查登录页上元素的可见性。

如果成功登录,下一步是什么,因为对于成功登录后的活动,我们必须通过添加隐式或显式wait直到该活动显示隐式等待,隐式等待是为了加载元素,因此,基本上,它使脚本等待元素在网页中出现/可见,甚至显式等待也是等待元素,即显式等待该元素。但是我担心后端API调用。如果你知道与否,selenium用于UI自动化,而不是后端API,但如果响应时间较短,那么你可以使用等待那么长时间来响应并等待下一个元素,不是吗..我很清楚,但我希望在网络日志模式下运行/初始化浏览器/浏览器驱动程序,并自动捕获这些请求,让脚本等待API响应,然后让selenium webdriver进入下一步。这就是我想要的。我相信你是在要求等待浏览器的xhr请求,对吗?一旦加载了所有“静态”元素——页面的结构、布局、导航,应用程序就会向BE发送请求以获取一些数据;当xhr req收到响应时,数据被注入并显示在页面中-如果我正确理解您的问题,您希望在继续之前完成此过程。当您使用ngWebDriver.waitForAngularRequestsToFinish()时,不需要使用任何类型的隐式等待或显式等待;此waitForAngularRequestToFinish()等待所有组件和请求。所以不需要。这取决于角度请求的实现和页面呈现。有时,请求完成后,页面不会立即呈现。因此,在页面加载或导航时执行任何操作之前,最好先进行显式等待。在我的angular应用程序中,我没有使用任何显式等待,因为waitForAngularRequestToFinish()正在执行所有等待。由于我在请求完成时也监控了网络,所以所有组件都已加载。@shrini感谢您的回答,我已经使用了此方法,但我可以看到许多自定义小部件在应用程序中使用,如:fileupload、calendar。这类小部件的响应非常晚,在这段时间内,测试脚本将进入下一步。所以我正在考虑如何在我的框架中处理这些自定义实现?尝试使用显式等待,直到这些元素可见或可单击为止。这应该可以解决等待问题。