Я только что протестировал решение, но оно очень грубое.Это работает, однако.
Примечание: переход непосредственно к пятой звезде (элемент с текстом «5») не работал для меня.Кажется, вам нужно навести курсор так, чтобы открылось окно держателя рейтинга, а затем навести курсор к пятой звезде, чтобы получить все из них как class = "hover".
Вот что я сделал:
- перейти к элементу выше («Написать отзыв») с помощью действия
- перейти вниз (положительное «y») с шагом 1 пиксель
- после каждогоинкремент, проверьте, содержит ли элемент с классом "wh-rating-choices" строку "block"
- если это так, перейдите к элементу с текстом "5", содержащемуся под элементом с классом "wh-rating"-choices-holder "
Я тестировал его на python, но вот что должно работать в Java:
Actions action = new Actions(driver);
int inc = 0;
while (inc < 100) {
WebElement top = driver.findElement(By.xpath("//*[contains(text(), 'Write a Review')]"));
action.moveToElement(top, 0, inc).contextClick().perform();
Thread.sleep(200);
a = driver.findElement(By.xpath("//*[contains(@class, 'wh-rating-choices')]"));
if (a.getAttribute("style").contains("block") {
aa = driver.findElement(By.xpath("//*[contains(@class, 'wh-rating-choices-holder')]"));
bb = aa.findElement(By.xpath(".//*[contains(text(), '5')]"));
action.moveToElement(bb).perform();
break;
}
inc++;
}
System.out.println(bb.getAttribute("outerHTML"));
Thread.sleep(200)
может быть излишним, попробуйте что-то ниже, например, 50 или 20.
PS.Возможно, вам нужно будет сначала закрыть всплывающее окно, которое имеет class="af-icon-cross"