Требуется решение, пожалуйста, помогите.
У меня одинаковый тип кнопки пропуска, свойство name id для всех продуктов. Меняется только Xpath. Пожалуйста, подскажите, как я могу быстро нажать на 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 продуктов
Хорошо, @JonathanHamel Сначала я подумал только об этом, но внезапно у меня возникла мысль, почему мы не можем использовать функцию цикла и нажимать кнопку одновременно 99 раз?
@koushick, вы также можете проверять условие, пока кнопка не отобразится, возможно, используется цикл while или что-то подобное. Следовательно, не ограничиваясь 99 или любым другим числом.
@eduPeeth, я не понимаю, чувак! Пожалуйста, можете ли вы поблагодарить вас? Застрял !!
Мало чего, что происходит, когда вы нажимаете кнопку «Пропустить», она исчезает после нажатия кнопки «Отмена»? Все ли кнопки пропуска доступны на странице одновременно?
Привет, @TarunLalwani! Как вы и просили, когда я нажимаю кнопку "Пропустить", появляется всплывающее окно "Вы хотите пропустить этот продукт, нажмите" ОК "или" Отмена ", как это на одной странице. Их 99 кнопок пропустить, и я получу 99 Всплывающие окна, в этом всплывающем окне мне нужно нажимать кнопку «Отмена» каждый раз, когда я нажимаю кнопку «Пропустить». Надеюсь, вы поняли, что я пытаюсь сказать.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Итак, учитывая информацию, я бы попробовал следующий код. Поскольку вы не упомянули язык, я бы дал логику в 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?
Его всего 4 строчки попробуйте сконвертировать на Java самостоятельно, вы поймете это лучше
Пытаться -
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, я отредактировал код выше. Не могли бы вы попробовать? Дай мне знать, работает это или нет.
Спасибо за сотрудничество, так же, как щелчок до определенного момента времени, а теперь выдача другой неизвестной ошибки. :(
Пожалуйста, попробуйте еще раз сейчас. Также можно поставить счетчик и посмотреть, сколько раз он щелкает. А если можно поставить отладчик и посмотреть где не получается.
@koushick, рад, если это вам помогло. Пожалуйста, проголосуйте за.
Уверенный мужчина! Спасибо за помощь. Быть на связи !
Конечно :). Спасибо.
Чтобы соответствовать вашему вводу, вы можете использовать частичное сопоставление идентификаторов. // * [содержит (@id, 'CustomPaging_GridView_gv_edit1_')] или // * [начинается с (@id, 'CustomPaging_GridView_gv_edit1_')]