Как выбрать действие на основе идентификатора пользователя на веб-странице с помощью Selenium Webdriver? - PullRequest
0 голосов
/ 30 января 2019

Я хочу сравнить Id из Excel с таблицей в системе.Если оба идентификатора одинаковы, он выберет действие в таблице.Он будет переходить на следующую страницу, пока не найдет идентификатор пользователя и не выберет процесс действия.Похоже, мой код неверен, но я не знаю, какую часть мне нужно изменить.

    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, который я поставил как (автор), он будет сравнивать идентификатор в таблице (идентификатор пользователя).

enter image description here

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Вы дважды тестируете id == author (один раз в if и один раз в while), и вы не извлекаете идентификатор со страницы на каждой новой странице, поскольку она находится вне цикла.Как-то так должно это исправить

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();
0 голосов
/ 30 января 2019

Сначала убедитесь, что идентификаторы элементов, которые вы можете использовать, одинаковы для текущей страницы и следующей страницы, если нет, то вам нужно выбрать новые идентификаторы для каждой страницы, на которой вы находитесь, и вы можете использовать логическое значение, которое изменится на 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();
  }
}

Пожалуйста, дайте мне знать, если это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...