Как искать элемент, используя атрибут в селене и Java - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь написать некоторый код в селене, который позволит мне выбрать элемент, используя значение атрибута "gamename".

Когда я проверяю код, я получаю это:

h4 class= "cardTitle_1ifib5" role="gamename">Test Web </h4>

Я могу выбрать по xpath:

"//*[@id="root"]/div/main/article/div[1]/div[1]/a/section/div[1]/h4"

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

Просто чтобы прояснить ситуацию, я хочу менять часть «Тестовой сети» каждый раз, когда я запускаю функцию, вот что будет меняться.Селектор выглядит следующим образом:

root> div> main> article> div.cards_f1mxfh> div: nth-child (2)> a> section> div.cardTop_1ead8bu> h4

Не знаюзнать, помогает ли это или нет

Ответы [ 4 ]

0 голосов
/ 25 мая 2018

Если я правильно понял вопрос, вот несколько примеров, как добиться обработки элемента атрибута:

1.с помощью селектора CSS:

webDriver.findElements(By.cssSelector("h4[role ='gamename']");

2.через xPath:

webDriver.findElements(By.xpath("//h4[@role='gamename']"))

или

webDriver.findElements(By.xpath("//*[@role='gamename']"))

3.через метод WebElement:

WebElement element = driver.findElement(...);
element.getAttribute("role")

Некоторые из этого примера должны работать.

Надеюсь, это поможет.

0 голосов
/ 25 мая 2018

В соответствии с предоставленным вами HTML-кодом и пробным кодом для идентификации элемента с помощью атрибута value вы можете использовать следующую Стратегию локатора :

  • xpath :

    "//h4[starts-with(@class,'cardTitle_1ifib') and @role='gamename'][normalize-space()='Test Web']"
    
0 голосов
/ 25 мая 2018

Вы хотите найти точный текст, кажется, XPath будет таким:

webDriver.findElement(By.xpath("//h4[contains(text(), '" + yourTestLucas + "')]"));

Таким образом, вы можете передать значение в любое время поставщикам данных.

КакЯ прочитал ваши комментарии, вы можете сделать это как метод:

Дело 1 : Если вы просто хотите найти этот элемент:

public WebElement findElementWithRoleName(String yourTestLucas) {
    return webDriver.findElement(By.xpath("//h4[contains(text(), '" + yourTestLucas + "')]"));
}

Дело2 : если вы хотите нажать на этот элемент:

public void clickElementWithRoleName(String yourTestLucas) {
    webDriver.findElement(By.xpath("//h4[contains(text(), '"+ yourTestLucas + "')]")).click();
}
0 голосов
/ 25 мая 2018

У Selenium есть опция, с помощью которой вы можете получить атрибуты элементов.[yourXpath].getAttribute("name");

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