首页 > 解决方案 > 如何使用 Selenium 并排打印一些文本?

问题描述

我必须并排打印酒店名称和价格

示例:oyo Rooms - 2000rs

我尝试使用 Selenium 网络驱动程序。

WebDriver driver = new ChromeDriver();
        String baseUrl = "https:www.teletextholidays.co.uk";
        driver.get(baseUrl);
        driver.manage().window().maximize();

          WebElement all_Inclusive = driver.findElement(By.xpath("//*[@class='header pstn-fxd edge txt-center fixed-nav-container']//div[@class='show-on-desktop inblock']//a[@class='top-nav-allinclusive nav-item txt-white inblock hover-out allinclusivelink']")); 
          all_Inclusive.click(); WebElement all_hotels =driver.findElement(By.xpath("//*[@class='lg-flex-box']"));
          JavascriptExecutor js = (JavascriptExecutor) driver;
          js.executeScript("arguments[0].scrollIntoView();", all_hotels);
          List<WebElement> hotellist = driver.findElements(By.xpath("//*[@class='deal-price pstn-reltv grid-stay items-center space-between']//span[@class='dstn-name txt-bold']")); 
          System.out.println(hotellist.get);
          List<WebElement> pricelist = driver.findElements(By.xpath("//*[@class='deal-price pstn-reltv grid-stay items-center space-between']//span[@class='tth-price font-bold txt-sunset']" ));
          /*for (WebElement hotel : hotellist) {
              System.out.println(hotel.getText());
          }*/
          for (WebElement price : pricelist) {
              System.out.println(price.getText());  
              if(price.getText().contains("157")) {
                  System.out.println(hotel);
              }
          }

预期输出:Oyo - 1000, alpha - 2345

我做错了什么?

标签: selenium-webdriver

解决方案


我们需要先获取父元素,然后从该元素中找到酒店和价格,以保持它们之间的相互关系。

尝试使用以下代码打印酒店 - 价格格式。

List<WebElement> listOfLinks = driver.findElements(By.cssSelector("a>div.deal-price"));

for(WebElement link: listOfLinks) {
    System.out.print(link.findElement(By.cssSelector(".from-price>.dstn-name")).getText());
    System.out.print(" - ");
    System.out.println(link.findElement(By.cssSelector(".txt-right .tth-price")).getText());
}

推荐阅读