java - 我需要添加一个等待,直到我得到来自带有 selenium-java 的 Angular http 请求的响应

标签 java angularjs http selenium selenium-chromedriver

我是 selenium 的新手,我正在尝试编写一个代码,它将登录到我的网站并检查下拉菜单并单击按钮。 单击按钮后,将触发 http Angular 请求并显示结果。我的要求是等待响应并使用 selenium 检查响应,然后从我的网站注销

    driver = new ChromeDriver();

    driver.get("https://url");
    driver.findElement(By.id("userId")).sendKeys("USERID");
    driver.findElement(By.id("password")).sendKeys("PASSWORD");
    driver.findElement(By.id("Submit")).click();

    Select dropdownA = new Select(driver.findElement(By.id("mySelectA")));
    dropdownA.selectByValue("2");
    Select dropdownB = new Select(driver.findElement(By.id("mySelectB")));
    dropdownB.selectByValue("5");

    driver.findElement(By.id("findroute")).click();

    /***/Here i need to wait for the angular http request to reply and check for the data displayed***

    driver.findElement(By.id("userTemp")).click();
    driver.findElement(By.linkText("Logout")).click();
    driver.close();

最佳答案

首先,让我们在启动驱动程序后添加一些隐式等待。现在这是 selenium 等待包括 angular 在内的任何元素的默认时间。

driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);

现在让我们考虑元素 A 在用户执行某些操作后出现。我的意思是元素 A 是有 Angular 的。现在检查元素是否存在。

driver.findElement(By.id(""));  
//Perform the required operations  after finding the element

脚本等待 Angular 元素出现 60 秒。如果现在我们将得到元素未找到异常。

其次,,我们可以利用显式等待来实现同样的目的。

WebDriverWait wait = new WebDriverWait(webDriver, timeoutInSeconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id<locator>));

wait.until(ExpectedConditions.elementToBeClickable(By.id<locator>));

希望对您有所帮助。谢谢。

关于java - 我需要添加一个等待,直到我得到来自带有 selenium-java 的 Angular http 请求的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44547560/

相关文章:

ruby-on-rails - 尝试使用操作电缆广播网络通知时出错

java - 未编译的java类但仍然执行

java - Spring 集成 ip - 仅使用 java 代码的 udp channel

java - 跟踪 Web 服务器上运行的应用程序的状态

javascript - 包含编译时间

用于数据保存的 Node.js 压缩代理

java - Java 中的 Comparable[] 是什么?

javascript - 在不明确要求 Assets 的情况下将 webpack 与 jade-loader 一起使用

angularjs - Angular Material md-select 显示焦点下拉列表

javascript - 请求的资源上不存在 Access-Control-Allow-Origin header