Я ищу некоторые советы о том, как выбрать WebElement. Когда я нажимаю кнопку, которая создает новую «страницу», данное значение является динамическим, поскольку оно полностью случайное и не последовательное. Я бы ожидал, что он будет следовать примеру: стр. 1 = 0, стр. 2 = 1, стр. 3 = 2 и т. Д.Лучший подход к использованию при динамическом создании значений?
По умолчанию я начинаю со страницы, и ее значение равно c3
. Хотя, когда я вызвать кнопку, чтобы создать новые страницы значения выглядят следующим образом:
<select class="j-currentPage f-feature-A" name="currentPage"> <option value="c3">New Page</option> <option value="c277">New Page 2</option> <option value="c383">New Page 3</option> <option selected="" value="c461">New Page 4</option> </select>
Так что, когда я пытаюсь использовать следующее:
List<WebElement> option = chrome.findElements(By.tagName("option"));
option.get(0).click();
option.get(1).click();
option.get(0).click();
Это, очевидно, не суметь как значения c277, c346 и т.д. и т. д., и нет никакого способа узнать, какие значения будут в новом сеансе, поскольку они всегда будут разными.
Стекловолокно выбрасывает StaleElementReferenceException
, потому что его нет в DOM.
Как я могу выбрать каждую страницу, когда значения абсолютно случайны?
Я использую Webdriver и JUnit4.
EDIT
Метод испытания: создать несколько новых страниц.
@Test
public void createANewPage(){
WebDriverWait wait = new WebDriverWait(chrome, 60);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("select.j-currentPage.f-feature-A[name=\"currentPage\"]")));
WebElement newPage = chrome.findElement(By.cssSelector("span.j-addViewBtn.ss-layers"));
newPage.click();
List<WebElement> option = chrome.findElements(By.tagName("option"));
option.get(1).click();
option.get(0).click();
}
Затем несколько тестов позже я хочу, чтобы перезвонить созданную страницу (ы)
@Test
public void goToPage(){
new WebDriverWait(chrome, 60).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("select.j-currentPage.f-feature-A[name=\"currentPage\"]")));
List<WebElement> option = chrome.findElements(By.tagName("option"));
option.get(0).click();
option.get(1).click();
option.get(0).click();
}
Я получаю org.openqa.selenium.StaleElementReferenceException
в точке третьего option.get(0).click();
Однако я чувствую, как будто Я приближаюсь к этому неправильно, так как значения динамически создаются. <option value="c3">New Page</option>
<option value="c207">New Page 2</option>
<option value="c288">New Page 3</option>
<option selected="" value="c366">New Page 4</option>
Один вопрос здесь. Вы хотите выбрать любую из этих опций. Или конкретный? –
Я хотел бы иметь возможность выбирать, какую страницу я хочу. Так что конкретная страница, как я бы хотел переключиться между страницами в более поздних тестах. –
Я не понял некоторых моментов. Как только вы выберете опцию, она перейдет на другую страницу, на которую вы спрашиваете: «Как я могу выбрать каждую страницу», поэтому то, что вы хотите здесь, не ясно. Не могли бы вы уточнить свой вопрос с более подробной информацией. –