Как я могу нажать одну и ту же кнопку 99 раз или пока код не закончится?

Требуется решение, пожалуйста, помогите.

У меня одинаковый тип кнопки пропуска, свойство name id для всех продуктов. Меняется только Xpath. Пожалуйста, подскажите, как я могу быстро нажать на 99 одинаковых кнопок пропуска и одну всплывающую кнопку отмены.

Здесь мое изображение для кнопки пропуска

Как я могу нажать одну и ту же кнопку 99 раз или пока код не закончится?

Вот мое изображение, после нажатия на «Пропустить» у меня появится подобное всплывающее окно. Мне нужно нажать "Отмена"

Как я могу нажать одну и ту же кнопку 99 раз или пока код не закончится?

Вниз я буду прикреплять код для пропуска и отмены.

Из Html-кода для кнопки пропуска я взял Xpath только для работы,

Мой Xpath

//input[@id='CustomPaging_GridView_gv_edit1_0'])-Product1
 //input[@id='CustomPaging_GridView_gv_edit1_1'])-Product2
  //input[@id='CustomPaging_GridView_gv_edit1_2'])-Product3

Like this 99 Products I Have To Write Xpath. It's Going Too Lengthy

HTML-код для кнопки пропуска:

 <input type = "submit" name = "CustomPaging_GridView$ctl02$gv_edit1" value = "SKIP" onclick = "product_skip(37639 );" id = "CustomPaging_GridView_gv_edit1_0" class = "button2">

HTML-код для кнопки отмены,

<div class = "modal-footer">
                <span id = "prcid" style = "display:none;">processing...</span>
                <button type = "button" id = "skipok" onclick = "skipoverall(this)" class = "btn btn-primary" data-id = "37639">Ok</button>
                <button type = "button" class = "btn btn-secondary" data-dismiss = "modal">Cancel</button>
            </div>

PS: Каждый раз, когда я нажимаю кнопку «Пропустить», мне нужно одновременно нажимать кнопку «Отмена». Мне нужно нажать кнопку пропуска и кнопку отмены для 99 продуктов

Чтобы соответствовать вашему вводу, вы можете использовать частичное сопоставление идентификаторов. // * [содержит (@id, 'CustomPaging_GridView_gv_edit1_')] или // * [начинается с (@id, 'CustomPaging_GridView_gv_edit1_')]

Jonathan Hamel 27.06.2018 15:24

Хорошо, @JonathanHamel Сначала я подумал только об этом, но внезапно у меня возникла мысль, почему мы не можем использовать функцию цикла и нажимать кнопку одновременно 99 раз?

koushick 27.06.2018 15:31

@koushick, вы также можете проверять условие, пока кнопка не отобразится, возможно, используется цикл while или что-то подобное. Следовательно, не ограничиваясь 99 или любым другим числом.

eduPeeth 27.06.2018 16:02

@eduPeeth, я не понимаю, чувак! Пожалуйста, можете ли вы поблагодарить вас? Застрял !!

koushick 27.06.2018 16:46

Мало чего, что происходит, когда вы нажимаете кнопку «Пропустить», она исчезает после нажатия кнопки «Отмена»? Все ли кнопки пропуска доступны на странице одновременно?

Tarun Lalwani 27.06.2018 18:22

Привет, @TarunLalwani! Как вы и просили, когда я нажимаю кнопку "Пропустить", появляется всплывающее окно "Вы хотите пропустить этот продукт, нажмите" ОК "или" Отмена ", как это на одной странице. Их 99 кнопок пропустить, и я получу 99 Всплывающие окна, в этом всплывающем окне мне нужно нажимать кнопку «Отмена» каждый раз, когда я нажимаю кнопку «Пропустить». Надеюсь, вы поняли, что я пытаюсь сказать.

koushick 28.06.2018 07:36
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
87
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Итак, учитывая информацию, я бы попробовал следующий код. Поскольку вы не упомянули язык, я бы дал логику в python

elems = driver.find_elements_by_xpath("//input[starts-with(@id, 'CustomPaging_GridView_gv_edit1_')]")

for elem in elems:
    elem.click()
    driver.find_element_by_xpath("//button[text()='Cancel']").click()

Спасибо, @Tarun Lalwani, вы можете посоветовать на Java?

koushick 28.06.2018 08:14

Его всего 4 строчки попробуйте сконвертировать на Java самостоятельно, вы поймете это лучше

Tarun Lalwani 28.06.2018 08:16
Ответ принят как подходящий

Пытаться -

public void clickSkipAndCancel(){
            List<WebElement> elements = driver.findElements(By.xpath("//input[contains(@id, 'CustomPaging_GridView_gv_edit1_')]"));
            for (Iterator<WebElement> iterator = elements.iterator(); iterator.hasNext();) {
                WebElement webElement = (WebElement) iterator.next();
                new WebDriverWait(driver, 10)
                .ignoring(StaleElementReferenceException.class)
                .until(new Predicate<WebDriver>() 
                       {
                         @Override
                         public boolean apply(@Nullable WebDriver driver) {
                         webElement.click();
                         return true;
                       }
});

                driver.findElement(By.xpath("//button[text()='Cancel']")).click();
            }                
        }

Вам нужно будет импортировать -

import org.openqa.selenium.WebElement;
import java.util.Iterator;
import java.util.List;

Сообщите мне, работает ли это для вас или нет.

Вниз я опубликовал проблему, я пробовал описанный выше метод, он работает. Но он работает, работает только до определенного момента времени.

koushick 28.06.2018 09:31

@koushick, я отредактировал код выше. Не могли бы вы попробовать? Дай мне знать, работает это или нет.

eduPeeth 28.06.2018 09:53

Спасибо за сотрудничество, так же, как щелчок до определенного момента времени, а теперь выдача другой неизвестной ошибки. :(

koushick 28.06.2018 10:14

Пожалуйста, попробуйте еще раз сейчас. Также можно поставить счетчик и посмотреть, сколько раз он щелкает. А если можно поставить отладчик и посмотреть где не получается.

eduPeeth 28.06.2018 10:28

@koushick, рад, если это вам помогло. Пожалуйста, проголосуйте за.

eduPeeth 02.07.2018 12:53

Уверенный мужчина! Спасибо за помощь. Быть на связи !

koushick 02.07.2018 12:58

Конечно :). Спасибо.

eduPeeth 02.07.2018 12:59

Другие вопросы по теме