Как указать список элементов в объекте страницы, не имея элемента для каждого из них - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть длинный список элементов, к которым я хотел бы получить доступ. Все они имеют идентичный идентификатор с индексом от 1 до 47. Есть ли хороший способ получить к ним доступ в виде массива или списка, так как я хотел бы иметь возможность выполнять их итерацию вместо того, чтобы делать это для каждого отдельного

[FindsBy(How = How.Id, Using = "ElementId1")]
public IWebElement Element1;
[FindsBy(How = How.Id, Using = "ElementId2")]
public IWebElement Element2;
[FindsBy(How = How.Id, Using = "ElementId....")]
public IWebElement Element....;

и затем составление списка элементов?

Могу ли я как-нибудь создать al oop, который найдет их и поместит их в сам массив, поэтому мне не нужно вручную определять каждый из них

Ответы [ 2 ]

1 голос
/ 13 февраля 2020

Вы можете использовать Xpath с атрибутом id

 @FindBy(how= How.XPATH, using= "//*[contains(@id, 'ElementId')]")
    private List<WebElement> allElements;

ИЛИ

CSS с запусками с использованием ^

@FindBy(how= How.CSS, using= "[id^='ElementId']")
private List<WebElement> allElements;

ИЛИ

Оба используют @ FindAll аннотацию

@FindAll({@FindBy(how= How.CSS, using= "[id^='ElementId']"),
        @FindBy(how= How.XPATH, using= "//*[contains(@id, 'ElementId')]")})
private List<WebElement> allElements;
1 голос
/ 13 февраля 2020

Вы можете искать элементы, которые начинаются с id="ElementId"

[FindsBy(How = How.CssSelector, Using = "[id^='ElementId']")]
public List<IWebElement> Elements;

Если номер находится посередине, вы можете искать элементы с id, который начинается с "Element" и заканчивается "Id"

[FindsBy(How = How.CssSelector, Using = "[id^='Element'][id$='Id']")]
public List<IWebElement> Elements;
...