我正在尝试使用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代码:
答案 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"