gpt4 book ai didi

java - Selenium Webdriver 等待异步回发 updatepanel 请求完成

转载 作者:太空宇宙 更新时间:2023-11-04 06:23:46 34 4
gpt4 key购买 nike

我有一个带有可单击列标题的表格。第一次单击时,该列应按升序排序,第二次单击时,该列应按降序排序。排序是使用异步回发更新面板实现的(我不确定它是如何完成的,它是一个 aspx 页面)。我想使用 Selenium Webdriver 自动化排序功能。如何为页面实现 WAIT 条件,其中页面不会重新加载,但只会重新加载表内容。waitForElementPresent 不起作用,因为单击标题时不会显示或隐藏新元素。PS:需要Java实现。

最佳答案

我添加了一个与jquery 表相关的示例程序。下面是代码的执行流程:

  • 首先,它将导航至该网站。
  • 由于我考虑了第二列“位置”,因此它将检索该列下的第一个文本。
  • 然后,点击列标题“位置”以升序排序
  • 等待 10 秒(最长),直到第一个文本发生变化。
  • 相应地打印结果。
  • 再次点击列标题“位置”以降序排序
  • 等待 10 秒(最长),直到第一个文本发生变化。
  • 相应地打印结果。

    public class TestSortTable{

    static WebDriver driver;

    public static void main(String[] args){

    driver = new FirefoxDriver();

    driver.manage().window().maximize();

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

    driver.get("http://www.datatables.net/examples/basic_init/table_sorting.html");

    //For Ascending in column "Position"
    String result = clickAndWaitForChangeText(By.xpath("//table[@id='example']//th[2]"), By.xpath("//table[@id='example']//tr[1]/td[2]"), "Ascending");

    if(result.contains("Fail"))
    System.err.println(result);
    else
    System.out.println(result);

    //For Descending in column "Position"
    result = clickAndWaitForChangeText(By.xpath("//table[@id='example']//th[2]"), By.xpath("//table[@id='example']//tr[1]/td[2]"),"Descending");

    if(result.contains("Fail"))
    System.err.println(result);
    else
    System.out.println(result);

    driver.close();//closing browser instance

    }

    //For clicking on header and waiting till the first text in the column changes
    public static String clickAndWaitForChangeText(By Header_locator, By first_text_locator, String sortorder){

    try{

    String FirstText = driver.findElement(first_text_locator).getText();

    System.out.println("Clicking on the header for sorting in: "+sortorder); //sortorder -> String representing sort order Ascending/Descending

    driver.findElement(Header_locator).click();//Click for ascending/Descending

    //Below code will wait till the First Text changes for ascending/descending
    boolean b = new WebDriverWait(driver,10).until(ExpectedConditions.invisibilityOfElementWithText(first_text_locator, FirstText));

    if(b==true){
    return "Pass: Waiting Ends. Text has changed from '"+FirstText+"' to '"+driver.findElement(first_text_locator).getText()+"'";
    }
    else{
    return "Fail: Waiting Ends. Text hasn't changed from '"+FirstText+"'.";
    }

    }catch(Throwable e){
    return "Fail: Error while clicking and waiting for the text to change: "+e.getMessage();
    }

    }

    }

注意:-您可以在代码中相应地使用方法clickAndWaitForChangeText来获得相关结果。

关于java - Selenium Webdriver 等待异步回发 updatepanel 请求完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27085877/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com