Я всегда не могу понять, как нажать btn во всплывающем окне добавления в корзину. - PullRequest
0 голосов
/ 01 июля 2018

Я сейчас практикуюсь на "homedepot.com", но окно добавления в корзину застревает. То, что я хочу сделать прямо сейчас, это просто нажать кнопку закрытия в этом окне добавления в корзину. Вот мой код:

 public static void main(String[] args) {

             String path = "C://Webdrivers//geckodriver.exe/";

                String url = "http://homedepot.com";
                System.setProperty("webdriver.gecko.driver", path);
                WebDriver driver = new FirefoxDriver();
                driver.get(url);
                driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
                if(driver.findElement(By.xpath("//*[@id=\"container\"]/div[1]/div[2]/div/div[2]/div[1]/div/div[1]/a")).isDisplayed() )      
                {
                     System.out.println("Logo displayed.");
                }
                else
                {
                    System.out.println("Logo not displayed.");
                }

                if(driver.findElement(By.xpath("/html/body/div[1]/div[1]/div[2]/div/div[2]/div[2]")).isDisplayed() )      
                {
                     System.out.println("searchbar displayed.");
                }
                else
                {
                    System.out.println("searchbar not displayed.");
                }


                if(driver.findElement(By.xpath("//*[@id=\"headerSearchGhost\"]")).isDisplayed() )      
                {
                     System.out.println("'What can we help you find today?' displayed.");
                }
                else
                {
                    System.out.println("'What can we help you find today?' not displayed.");
                }
                driver.findElement(By.xpath("//*[@id=\"headerSearch\"]")).sendKeys("hammer");

                driver.findElement(By.xpath("//*[@id=\"headerSearchButton\"]")).click();

                if(driver.findElement(By.xpath("/html/body/div[1]/div[2]/div/div[1]/div[5]/div[2]/div[2]/div[1]/div[1]/div/div/div[1]/div/div[3]/div[1]/a")).isDisplayed() )      
                {
                     System.out.println("'Husky 16 oz. Fiberglass Claw Hammer' displayed.");
                }
                else
                {
                    System.out.println("'Husky 16 oz. Fiberglass Claw Hammer' not displayed.");
                }
        driver.findElement(By.xpath("/html/body/div[1]/div[2]/div/div[1]/div[5]/div[2]/div[2]/div[1]/div[1]/div/div/div[1]/div/div[4]/div[3]/div/a/span")).click();
    //          driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    //          driver.findElement(By.className("thd-overlay__close")).click();
                WebDriverWait wait = new WebDriverWait(driver, 20);
     wait.until(ExpectedConditions.elementToBeClickable(By.className("thd-overlay__close"))).click();

Я тоже раньше занимался автоматизациейparcitce.com, и у меня с этой проблемой была проблема с добавлением в корзину. Мой друг использовал: // driver.manage (). timeouts (). implicitlyWait (5, TimeUnit.SECONDS); // driver.findElement (By.className ("thd-overlay__close")). click ();

это работает для нее, так что я не знаю, что случилось с моим?

Ответы [ 3 ]

0 голосов
/ 01 июля 2018

Прежде чем нажимать кнопку закрытия, введите код:

driver.switchTo().frame(driver.findElement(By.xpath("//div[@data-direction='bottom']/div[2]/div/iframe")));

Тогда напишите:

driver.findElement(By.className("thd-overlay__close")).click();

Давайте проверим, работает ли он или нет.

0 голосов
/ 02 июля 2018

Пожалуйста, используйте этот код для этого:
Я вручную перешел к кнопке добавления в корзину и затем выполнил шаги, чтобы открыть и закрыть всплывающее окно «Добавить в корзину»:

package com.demo.core;

import java.util.List;
import java.util.Scanner;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class HomeDepoTest {

    public static void main(String[] args) {

        System.setProperty("webdriver.chrome.driver", "D:\\ECLIPSE-WORKSPACE\\playground\\src\\main\\resources\\chromedriver-2.35.exe");
        WebDriver driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

        driver.navigate().to("https://www.homedepot.com/s/hammer?NCNI-5");
        Scanner sc= new Scanner(System.in);
        System.out.println("Holding Exceution until manually proceeding steps upto Add to Cart button");
        System.out.println("Manually go to the add to cart button and then press any integer ....");
        int i = sc.nextInt();

        List<WebElement> addToCartButton = driver.findElements(By.xpath("//span[contains(.,'Add to Cart')]"));
        addToCartButton.get(0).click();  // clicking on first "Add to Cart" button

        WebElement addToCartPopup = driver.findElement(By.xpath("//iframe[@src and contains(@class,'thd-overlay-frame')]"));
        driver.switchTo().frame(addToCartPopup);

        WebElement closePopUpButton = driver.findElement(By.xpath("//a[@data-automation-id='headerDesktopCloseAddToCartOverlay']"));
        closePopUpButton.click();
    }

}

Надеюсь, это поможет вам.

0 голосов
/ 01 июля 2018

Возможно, вам придется сказать Селену переключить кадры во всплывающее окно, так как это iframe. driver.switch_to.frame(By., 'name') Я считаю, что это то, что используется в Python, но не уверен насчет Java. Затем вы можете сказать ему, чтобы нажать на кнопку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...