Обрабатывать всплывающее окно JavaScript внутри div

1

Если вы нажмете на эту ссылку http://www.interflora.fr/fleurs-naissance-maman/cadeau-orchidee-champagne-veuve-cliquot-vintage/PRIX-UNIQUE/FR, то на желтой кнопке "Commander" появится всплывающее окно Но я действительно не знаю, как с этим справиться.

Я попробовал WindowHandles, как показано ниже.

String subWindowHandler = null;
Set<String> handles = driver.getWindowHandles(); 
Iterator<String> iterator = handles.iterator();
while (iterator.hasNext()){
     subWindowHandler = iterator.next();
}
driver.switchTo().window(subWindowHandler); 

System.out.println("popup : " + subWindowHandler);

но до или после нажатия на "Commander" мы все еще находимся на одной странице "subWindowHandler", так что это не о WindowHandles

Когда я нажимаю "Commander", он запускает javascript. Вот он:

$(document).ready(function () {
        $('#addToCartPdp').click(function () {
                var prixLibre = parseInt($( "#prixLibre" ).val());
                var smallPrice = parseInt($( "#smallPrice" ).val());
                var formattedSmallPrice = $( "#smallPrice" ).attr('title');
                var length_accessoires = 3;
                $( "#msgSmallPrice" ).text(formattedSmallPrice);
                if((prixLibre < smallPrice || prixLibre > 1000) && $('#radioPrixLibre').is(':checked'))
                {
                    $.colorbox({
                        html: $( "#popupPrixLibre" ).html(), 
                        overlayClose: false, 
                        escKey: false,
                        onLoad: function () {
                            $( "#msgSmallPrice").text(formattedSmallPrice);
                        },
                        onComplete: function () {
                        $( "#msgSmallPrice").text(formattedSmallPrice);
                        }
                    });
                }
                else if( length_accessoires <= 0)
                {
                     $( "#addAccToCartForm" ).submit();
                }
                else if($("#addAccToCartFormCarousel input[name='accessoiresCodes']:checked").length == length_accessoires)
                {
                    $( "#addAccToCartFormCarousel" ).submit();
                }
                else
                {
                        $.colorbox({
                        html: $( "#popupAccessoire" ).html(), overlayClose: false, escKey: false,
                        onLoad: function () {
                            $('#cboxClose').remove();
                        },
                        onComplete: function () {
                            var totalProduct = $('.inputCheckAcc').size();
                            var totalProductChecked = 0;
                            $('.inputCheckAcc').each(function () {
                                var elem = $(this);
                                var currentAcc = $('#productCodePost-' + elem.val());
                                if (currentAcc.length && currentAcc.parent('label').hasClass('checOn')) {
                                    elem.parent().parent().parent().hide();
                                    elem.prop('checked', true);
                                    elem.parent('label').removeClass('checOff').addClass('checOn');
                                    totalProductChecked++;
                                }
                                else {
                                    elem.prop('checked', false);
                                    elem.parent('label').removeClass('checOn').addClass('checOff');
                                }
                            });
                            $(".BtnJ").eq(1).on('click', function(){
                               $(".BtnJ").eq(1).prop("disabled",true);
                               $(".BtnJ").eq(1).off("click");
                               $('.acc_add_to_cart_form').eq(2).submit();
                             });
                            $('.acc_add_to_cart_form').preventDoubleSubmission(); 

                        },
                        scrolling: false
                    });
                    loadchekedStyle();
                }
       });
 });
 $("#addAccToCartFormCarousel").preventDoubleSubmission();

Я попытался справиться с этим с помощью Alert, но это все еще не сработало. У меня заканчивается идея.

Любая помощь будет оценена по достоинству. Заранее спасибо.

Теги:
webdriver
alert
handle

1 ответ

0

Это не новое окно, а не предупреждение, оно просто появляется на одной странице. Таким образом, вы можете дождаться появления всплывающего окна на странице, а затем работать с ним. Вот пример его закрытия на java:

WebdriverWait wait = new WebDriverWait(driver, 5);
//Wait for popup is visible
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@id='cboxLoadedContent']")));
//Close popup
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@id='cboxLoadedContent']//a[@id='btnCrossPopup']"))).click();
  • 0
    Спасибо Михаил Филонченко. Я действительно ценю твою помощь. Сейчас работает как положено. Еще раз спасибо за ваше время.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню