Если вы нажмете на эту ссылку 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, но это все еще не сработало. У меня заканчивается идея.
Любая помощь будет оценена по достоинству. Заранее спасибо.
Это не новое окно, а не предупреждение, оно просто появляется на одной странице. Таким образом, вы можете дождаться появления всплывающего окна на странице, а затем работать с ним. Вот пример его закрытия на 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();