无法在flipkart搜索结果页面中找到元素

时间:2018-03-23 01:08:10

标签: java selenium xpath selenium-webdriver webdriver

我正在尝试使用classname/xpath/cssselector查找(Flipkart e-commerce website)网站中显示的搜索结果数,但我无法找到结果总数。

总数显示为文字:

  

“显示1 - 24的8,747结果为”手机“

在网页中。我也无法确定每个页面中显示的搜索项目数量,在这种情况下为24。

我用来查找元素的代码是:

List<WebElement> flipkartTotalItems = driver.findElements(By.cssSelector("#container > div > div:nth-child(2) > div > div._1XdvSH._17zsTh > div > div._2xw3j- > div > div:nth-child(3) > div._2SxMvQ > div > div:nth-child(1)"));


#container > div > div:nth-child(2) > div > div._1XdvSH._17zsTh > div > div._2xw3j- > div > div._15eYWX > div > div.KG9X1F > h1 > span

我添加了thread.sleep方法调用以加载页面。 文本webelement的HTML代码:

4 个答案:

答案 0 :(得分:1)

你可以使用下面的xpath找到它“显示1 - 24的8,747结果为”手机“

//*[contains(text(),'Showing 1 – 24 of 8,747 results for')]

下面是查找页面中显示的数字搜索结果。

//*[@class='_1UoZlX']

答案 1 :(得分:0)

我认为获得结果总数的最佳方法是使用此xpath

//span[contains(text(),'Showing')]

然后使用&#34; GetText()&#34;使用字符串格式获取结果

String result = driver.findElement(By.xpath("<xpath>")).getText(); 

答案 2 :(得分:0)

HTML对浏览器自动化不是很友好,但是我认为在页面上获取搜索结果的最稳定的xpath是:

List<WebElement> flipkartTotalItems = driver.findElements(By.xPath("//div[@class = 'col col-7-12']"));

获取此列表的长度或计数将为您提供页面上的结果数量。

答案 3 :(得分:0)

根据 url 您已共享以查找Flipkart Search Result电子商务网站中显示的搜索结果数量,您必须为诱导 WebDriverWait > WebElement 可见,然后按如下方式提取文本:

System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.get("https://www.flipkart.com/search?q=mobile%20phones&otracker=start&as-show=on&as=offFlipkart ecommerce website");
new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[@class='W-gt5y']")));
driver.findElement(By.xpath("//span[@class='W-gt5y']//ancestor::span")).getText();
System.out.println(driver.findElement(By.xpath("//span[@class='W-gt5y']//ancestor::span")).getText());

控制台输出:

Showing 1 – 24 of 8,753 results for "mobile phones"