如何使用Selenium Webdriver在网页中基于用户ID选择操作?

时间:2019-01-30 08:27:13

标签: selenium selenium-webdriver

我想将excel中的ID与系统中的表进行比较。如果两个ID相同,则它将在表中选择一个动作。 它将转到下一页,直到找到用户ID并选择操作过程为止。看起来我的代码是错误的,但是我不知道需要更改哪一部分。

    driver.findElement(By.linkText("S")).click();
        String author = sh1.getRow(5).getCell(0).getStringCellValue();
    String id = driver.findElement(By.xpath("//td/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/table/thead/tr/td[2]")).getText();  
    do {
        if(id.equals(author)){

            Select view = new Select(driver.findElement(By.xpath("(//select[@name='selectedAction'])")));
            view.selectByVisibleText("View");
            driver.findElement(By.id("returnImage2")).click();
            driver.findElement(By.linkText("Logout")).click();
            driver.close(); 
            break;

        }
        else {
            driver.findElement(By.id("imgListNext2")).click();  }

    }
    while(!id.equals(author));


    }
}

这是该表的屏幕截图。因此,基于我作为(作者)所放置的excel中的ID,它将比较表中的ID(用户ID)。

enter image description here

2 个答案:

答案 0 :(得分:4)

首先,请检查当前页面和下一页可以使用的元素ID,如果不相同,则需要为您所在的每个页面选择新的ID,然后可以使用布尔值,该布尔值将变为true如果您的条件匹配并且直到不满足条件,您可以使用while循环继续检查它,例如:

boolean match = false;
while(!match){     
  if(id.equals(author)){
  //Insert the select code here and set the boolean as true like:
  match = true;
  }
  else{ 
  driver.findElement(By.id("imgListNext2")).click();
  }
}

请告诉我是否有帮助。

答案 1 :(得分:-1)

您正在两次测试id == author(一次在if中测试一次,一次在while中测试一次),并且您没有从每个新页面的页面上提取ID,因为它不在循环中。这样的东西应该可以解决

driver.findElement(By.linkText("S")).click();
String author = sh1.getRow(5).getCell(0).getStringCellValue();
while (!author.equals(driver.findElement(By.xpath("//td/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/table/thead/tr/td[2]")).getText()))
{
    driver.findElement(By.id("imgListNext2")).click();
    // you will probably need to add some sort of wait here... wait for stale or the like to make sure the page has changed before you pull the ID again in the while
}

Select view = new Select(driver.findElement(By.xpath("(//select[@name='selectedAction'])")));
view.selectByVisibleText("View");
driver.findElement(By.id("returnImage2")).click();
driver.findElement(By.linkText("Logout")).click();
driver.close();