Flipkart.com слайдер цен xpath - PullRequest
       8

Flipkart.com слайдер цен xpath

0 голосов
/ 23 апреля 2020

На странице мобильного поиска Flipkart (https://www.flipkart.com/search?q=samsung&otracker=search&otracker1=search&marketplace=FLIPKART&as-show=on&as=off) я пытаюсь установить фильтр цен (минимальная цена = 250 и максимальная = 25000). Я написал ниже код для этого:

WebElement slider1 = driver.findElement(By.xpath("//div[@class='_3G9WVX _2N3EuE']"));
            WebElement slider2 = driver.findElement(By.xpath("//div[@class='_3G9WVX oVjMho']"));
            Thread.sleep(3000);

            act.dragAndDropBy(slider2, -60, 0).build().perform();
            Thread.sleep(3000);
            act.dragAndDropBy(slider1, 30, 0).build().perform();

, но он выбрасывает Нет такого исключения элемента:

no such element: Unable to locate element: {"method":"xpath","selector":"//div[@class='_3G9WVX _2N3EuE']"}

У меня есть два запроса:

  1. Почему это выдает исключение, даже если xpath верен?
  2. Как установить минимальную и максимальную цену с помощью ползунка?

Ниже приведен полный код на тот случай, если вам нужно проверить:

package seleniumtestingscript;
import java.util.HashMap;
import java.util.Map;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

//1. Open Flipkart
//2. Click on MObile(Go quickly to > MObiles)
//3. Search Samsung
//4. Select price range using slider min=250 ma=25000
//5. Print the phone name
//6. Then clear the filter
//7. Remove price filter
//8. Print the phone name

public class FlipKartDemo {

    WebDriver driver;
    WebDriverWait wait;
    JavascriptExecutor js;
    Select select;

    @BeforeMethod
    public void launch_Browser() {

        System.setProperty("webdriver.chrome.driver",
                "G:\\Sheetal\\Selenium_Program_Practice\\Driver\\chromedriver.exe");
        ChromeOptions options = new ChromeOptions();
        Map<String, Object> prefs = new HashMap<String, Object>();
        prefs.put("profile.managed_default_content_settings.geolocation", 2);
        options.setExperimentalOption("prefs", prefs);

        driver = new ChromeDriver(options);

        String URL = "https://www.flipkart.com/";
        driver.get(URL);
        driver.manage().window().maximize();

    }

    @Test
    public void printPhoneName() throws InterruptedException
    {
        WebElement closeicon = driver.findElement(By.xpath("//button[contains(text(),'✕')]"));

        if (closeicon.isDisplayed()) {
            closeicon.click();
            Thread.sleep(5000);
            Actions act = new Actions(driver);
            wait = new WebDriverWait(driver, 15);
            WebElement Electronics = driver.findElement(By.xpath("//span[contains(text(),'Electronics')]"));
            act.moveToElement(Electronics).build().perform();
            wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("(//a[@title='Mobiles'])[position()=1]"))).click();



            wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@title='Search for products, brands and more']"))).sendKeys("samsung");;
            driver.findElement(By.xpath("//button[@type='submit']")).click();
            WebElement slider1 = driver.findElement(By.xpath("//div[@class='_3G9WVX _2N3EuE']"));
            WebElement slider2 = driver.findElement(By.xpath("//div[@class='_3G9WVX oVjMho']"));
            Thread.sleep(3000);

            act.dragAndDropBy(slider2, -60, 0).build().perform();
            Thread.sleep(3000);
            act.dragAndDropBy(slider1, 30, 0).build().perform();


        } else {

                }

    }

}

1 Ответ

1 голос
/ 23 апреля 2020

проверьте код ниже, он работает для меня.

  driver.get("https://www.flipkart.com/search?q=samsung&otracker=search&otracker1=search&marketplace=FLIPKART&as-show=on&as=off&p%5B%5D=facets.fulfilled_by%255B%255D%3DFlipkart%2BAssured&p%5B%5D=facets.price_range.from%3DMin&p%5B%5D=facets.price_range.to%3D16000");

  WebElement slider1 = driver.findElement(By.xpath("//div[@class='_3G9WVX oVjMho']//div[@class='_3aQU3C']"));
  WebElement slider2 = driver.findElement(By.xpath("//div[@class='_3G9WVX _2N3EuE']//div[@class='_3aQU3C']"));
  Thread.sleep(3000);
  Actions act = new Actions(driver);
  WebDriverWait wait= new WebDriverWait(driver, 15);
  act.dragAndDropBy(slider2, -60, 0).build().perform();
  Thread.sleep(3000);
  act.dragAndDropBy(slider1, 30, 0).build().perform();

Вывод:

enter image description here

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