suumo-search

Perform advanced searches on Suumo.jp
git clone https://git.neuralcrash.com/suumo-search.git
Log | Files | Refs | README

Browser.java (1660B)


      1 package xyz.kebigon.housesearch.browser;
      2 
      3 import java.io.Closeable;
      4 import java.io.IOException;
      5 import java.util.List;
      6 
      7 import org.openqa.selenium.By;
      8 import org.openqa.selenium.NoSuchElementException;
      9 import org.openqa.selenium.WebDriver;
     10 import org.openqa.selenium.WebElement;
     11 import org.openqa.selenium.htmlunit.HtmlUnitDriver;
     12 
     13 import lombok.extern.slf4j.Slf4j;
     14 
     15 @Slf4j
     16 public abstract class Browser implements Closeable
     17 {
     18     private WebDriver driver;
     19 
     20     protected Browser()
     21     {
     22         driver = new HtmlUnitDriver();
     23     }
     24 
     25     @Override
     26     public void close() throws IOException
     27     {
     28         driver.quit();
     29     }
     30 
     31     protected void navigateTo(String url)
     32     {
     33         log.info("Navigate to {}", url);
     34         driver.navigate().to(url);
     35     }
     36 
     37     protected void restartBrowser()
     38     {
     39         final String url = driver.getCurrentUrl();
     40         log.info("Restarting browser, navigate to {}", url);
     41 
     42         driver.quit();
     43         driver = new HtmlUnitDriver();
     44         driver.navigate().to(url);
     45     }
     46 
     47     protected List<WebElement> findElements(String xpathExpression)
     48     {
     49         return driver.findElements(By.xpath(xpathExpression));
     50     }
     51 
     52     protected boolean click(String xpathExpression)
     53     {
     54         try
     55         {
     56             final WebElement element = driver.findElement(By.xpath(xpathExpression));
     57             log.info("Click on {}, navigate to {}", element.getText(), element.getAttribute("href"));
     58             element.click();
     59             return true;
     60         }
     61         catch (final NoSuchElementException e)
     62         {
     63             log.warn("Unable to click on '{}'", xpathExpression);
     64             return false;
     65         }
     66     }
     67 }