#java #selenium #automation #r-stars
Вопрос:
На веб-странице у меня есть отзыв о звездах рейтинга ,когда я навожу курсор на звезды, они становятся желтыми .У меня 5/6 похожих дивов, того же класса и конфигурации.Если я пропылесосю и нажму на 4-е звезды, они все станут желтыми .Что я хотел бы сделать, так это нацелиться на четвертую звезду и нажать на нее, чтобы установить рейтинг. Я пробовал использовать цепочки действий и xpath, но это не работает. ниже приведен html-код для звезд:
<div class="rating-box-wrapper" style="height: 35px;">
<svg viewBox="0 0 34 32" preserveAspectRatio="none" zing-touch="" class="rvs-star-svg" width="38" height="35.72" style="touch-action: manipulation; user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><!----><!----><!----><g><path d="M6.37 32l3.972-12.215-10.417-7.569h12.89l3.972-12.215 3.972 12.215h12.89l-10.417 7.569 3.972 12.215-10.417-7.569zM16.787 22.557l7.569 5.471-2.848-8.843 7.569-5.471h-9.368l-2.848-8.843-2.848 8.843h-9.368l7.569 5.471-2.848 8.843z" fill="#4ae0e1"></path></g><!----><!----></svg>
<svg viewBox="0 0 34 32" preserveAspectRatio="none" zing-touch="" class="rvs-star-svg" width="38" height="35.72" style="touch-action: manipulation; user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><!----><!----><!----><g><path d="M6.37 32l3.972-12.215-10.417-7.569h12.89l3.972-12.215 3.972 12.215h12.89l-10.417 7.569 3.972 12.215-10.417-7.569zM16.787 22.557l7.569 5.471-2.848-8.843 7.569-5.471h-9.368l-2.848-8.843-2.848 8.843h-9.368l7.569 5.471-2.848 8.843z" fill="#4ae0e1"></path></g><!----><!----></svg>
<svg viewBox="0 0 34 32" preserveAspectRatio="none" zing-touch="" class="rvs-star-svg" width="38" height="35.72" style="touch-action: manipulation; user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><!----><!----><!----><g><path d="M6.37 32l3.972-12.215-10.417-7.569h12.89l3.972-12.215 3.972 12.215h12.89l-10.417 7.569 3.972 12.215-10.417-7.569zM16.787 22.557l7.569 5.471-2.848-8.843 7.569-5.471h-9.368l-2.848-8.843-2.848 8.843h-9.368l7.569 5.471-2.848 8.843z" fill="#4ae0e1"></path></g><!----><!----></svg>
<svg viewBox="0 0 34 32" preserveAspectRatio="none" zing-touch="" class="rvs-star-svg" width="38" height="35.72" style="touch-action: manipulation; user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><!----><!----><!----><g><path d="M6.37 32l3.972-12.215-10.417-7.569h12.89l3.972-12.215 3.972 12.215h12.89l-10.417 7.569 3.972 12.215-10.417-7.569zM16.787 22.557l7.569 5.471-2.848-8.843 7.569-5.471h-9.368l-2.848-8.843-2.848 8.843h-9.368l7.569 5.471-2.848 8.843z" fill="#4ae0e1"></path></g><!----><!----></svg>
<svg viewBox="0 0 34 32" preserveAspectRatio="none" zing-touch="" class="rvs-star-svg" width="38" height="35.72" style="touch-action: manipulation; user-select: none; -webkit-user-drag: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><!----><!----><!----><g><path d="M6.37 32l3.972-12.215-10.417-7.569h12.89l3.972-12.215 3.972 12.215h12.89l-10.417 7.569 3.972 12.215-10.417-7.569zM16.787 22.557l7.569 5.471-2.848-8.843 7.569-5.471h-9.368l-2.848-8.843-2.848 8.843h-9.368l7.569 5.471-2.848 8.843z" fill="#4ae0e1"></path></g><!----><!----></svg><!----></div>
Действия действия = новые действия(драйвер); WebElement review_stars=водителем.findElement(по.в XPath(«//[имя()=’SVG-графику и содержит(@класс,’РВС-звезда в формате SVG’)]/[имя()=’путь’]»)); действие.МО
veToElement(review_stars).нажмите кнопку().построить().проанализировать();
Комментарии:
1. Пожалуйста, предоставьте нам ссылку на эту веб-страницу
2. wallethub.com/profile/test-insurance-company-13732055i#reviews
3. я добавил фрагмент html, если это поможет .или попробуйте ip-VPN, если возможно
Ответ №1:
Пожалуйста, сначала попробуйте это:
driver.findElement(By.xpath("(//review-star[@class='rvs-svg']//*[name()='svg'])[4]")).click();
Или
WebElement review_stars = driver.findElement(By.xpath("(//review-star[@class='rvs-svg']//*[name()='svg'])[4]"));
action.moveToElement(review_stars).build().perform();
review_stars.click();
Комментарии:
1. Я не мог видеть, чтобы элементы там стали желтыми, но если все, что вы ищете, это нажать на опцию обзора с 4-й звездой, это должно сработать
2. первый из них работает . но он не зависает ,он просто щелкнул по 4-й звезде
3. Да, он не парит. Так ли важно парить там?
4. Хорошо, я изменил второй подход, чтобы перейти к действиям, а затем нажать «С драйвером». Я не могу проверить это, так как в моем браузере даже в 100% ручном режиме цвет при наведении не меняется…
5. я хочу навести курсор на каждую звезду, а затем, наконец, нажать на 4-ю звезду, но это так быстро, что я не могу выполнить .
Ответ №2:
наведите курсор на каждую звезду, а затем, наконец, нажмите на 4-ю звезду, вы можете использовать приведенный ниже код.
Пример кода :
Actions action = new Actions(driver);
List<WebElement> all_stars = driver.findElements(By.xpath("//div[@class='rating-box-wrapper']//*[local-name()='svg']"));
for (int i = 0; i<5; i ) {
Thread.sleep(2000);
action.moveToElement(all_stars.get(i)).build().perform();
if(i == 3) {
action.moveToElement(all_stars.get(i)).click().build().perform();
}
}
Комментарии:
1. Я изменил xpath, и тогда он работал нормально. Спасибо
2. Итак, вы реализовали здесь то, что я предложил в последнем комментарии?
3. @Пророк : Я не мог до тебя дозвониться. Я прочитал этот комментарий от OP
i want to hover over each stars and then finally click on 4th star but it is so fast that I am not able to perform
и реализовал это.