【问题标题】:How to check if refresh page event occurs or not after an UI event (ex. click on a button)如何检查 UI 事件后是否发生刷新页面事件(例如单击按钮)
【发布时间】:2014-04-30 21:17:55
【问题描述】:

得到以下代码:

 driver.findElement(By.id("input_search")).click();
 driver.findElement(By.id("input_search")).clear();
 if(lower3 == true){
    //read a line from a doc 
    document_path = "C:\\MyProject\\src\\harness\\lower_than_3" 
    FileInputStream fis = new FileInputStream(document_path);  
    BufferedReader br = new BufferedReader(new InputStreamReader(fis));         
    while((line = br.readLine()) != null){
        //line is inserted into search field
        driver.findElement(By.id("input_search")).sendKeys(line);
        Thread.sleep(100);     

       //press search button- page should NOT refresh if string length for search is lower than three, NO search is performed
       driver.findElement(By.cssSelector("div.btn-img.submit")).click();

       //ASSERT OR VERIFY IF PAGE IS RELOADED OR NOT AFTER CLICK ON SEARCH BUTTON
       NEED HELP         
    }
    br.close();   
 }

执行搜索后单击搜索按钮(代码区域的第 15 行)我想检查是否发生页面刷新事件。我不想刷新页面(有很多这样的例子:))我只想检查页面是否刷新

【问题讨论】:

  • 最好在执行搜索操作后检查元素,而不是检查页面是否刷新。
  • 同意@AbhishekYadav,您最好检查页面上的条件,当搜索字符串
  • @Steve Crawford 和 Abhishek Yadav - 如果搜索字符串
  • 我想这会奏效,但这并不理想。在搜索之前执行 findElement 以获取页面上的元素。搜索页面是否刷新后,如果您尝试单击它,您将收到 StaleElementException。如果页面没有刷新则点击成功

标签: java selenium-webdriver page-refresh


【解决方案1】:

您可以使用其中任何一个来解决您的目的:

解决方案 1: 执行搜索操作后验证元素。

driver.findElement(By.id("input_search")).clear();
driver.findElement(By.id("input_search")).click();

//here write code to wait for an element available on search result page

try{
if(driver.findElement(By.id("search result page element")).isDisplayed() == true){
System.out.println("Search successful");
} catch (NoSuchElementFound ee){System.out.println("Search not successful");}

解决方案 2: 使用 java 脚本执行搜索操作后检查页面是否加载。

driver.findElement(By.id("input_search")).clear();
driver.findElement(By.id("input_search")).click();

//here write code to wait for sometime around 10-20 seconds

JavascriptExecutor jsExecutor = (JavascriptExecutor)driver;
String s = (String) jsExecutor.executeScript("var s1 = 'Search successful'; var s2 = 'Search not successful'; if(document.readyState === 'complete'){return s1;} else {return s2;}");

这两个代码 sn-p 都针对 Google 进行了测试。

【讨论】:

  • 我需要的是数字 2 的解决方案。感谢您的回答 Abhishek Yadav
猜你喜欢
  • 2019-03-25
  • 1970-01-01
  • 2014-02-15
  • 1970-01-01
  • 2021-09-12
  • 2011-01-11
  • 1970-01-01
  • 2016-10-16
  • 2012-08-19
相关资源
最近更新 更多