代码之家  ›  专栏  ›  技术社区  ›  Rao

Arraylist使用Selenium、TestNG、java推送动态表行

  •  0
  • Rao  · 技术社区  · 7 年前

    enter image description here

    driver.findElement(By.id("lnkLogin")).click();
    
    WebElement  cmp = driver.findElement(By.id("txtCompanySearch"));
    cmp.sendKeys("Demo Company");
    
    driver.findElements(By.xpath(".//*[@id=\"TenantTBL\"]/tbody/tr[5]/td")).get(0).click();
    

    xpath 用于选择的索引, 但我想得到所有符合我的 sendKeys

    我试过了,但没用

    ArrayList<Integer> numbers = new ArrayList<Integer>();
    By elems = By.xpath(".//*[@id=\"TenantTBL\"]/tbody/tr");
    WebElement select = driver.findElement(elems);
    List<WebElement> matches = select.findElements(By.xpath(".//*[@id=\"TenantTBL\"]/tbody/tr"));
    List<String> currentVals = new ArrayList<>();
    for (WebElement match : matches) {
        currentVals.add(match.getText());
    }
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Guy    7 年前

    使用时 . 在里面 xpath 你正在使用当前上下文,所以

    WebElement select = driver.findElement(By.xpath(".//*[@id=\"TenantTBL\"]/tbody/tr"));
    List<WebElement> matches = select.findElements(By.xpath(".//*[@id=\"TenantTBL\"]/tbody/tr"));
    

    相当于

    List<WebElement> matches = select.findElements(By.xpath(".//*[@id=\"TenantTBL\"]/tbody/tr//*[@id=\"TenantTBL\"]/tbody/tr"));
    

    基本上,您正在寻找一个元素,它本身就是一个子元素。直接定位元素

    By elems = By.xpath(".//*[@id=\"TenantTBL\"]/tbody/tr");
    List<WebElement> matches = driver.findElements(elems));