При работе с селеном + Java геолокация не включена в режиме Chrome Headless, однако она отлично работает в режиме без головы - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть этот HTML, который я получил от W3Schools

<!DOCTYPE html>
<html>
<body>

<p>Click the button to get your coordinates.</p>

<button onclick="getLocation()">Try It</button>

<p id="demo"></p>

<script>
var x = document.getElementById("demo");

function getLocation() {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(showPosition);
  } else { 
    x.innerHTML = "Geolocation is not supported by this browser.";
  }
}

function showPosition(position) {
  x.innerHTML = "Latitude: " + position.coords.latitude + 
  "<br>Longitude: " + position.coords.longitude;
}
</script>

</body>
</html>

И у меня есть код селена, подобный этому, без режима без головы,

public static void main(String[] args) throws InterruptedException {
    WebDriver driver = new ChromeDriver();
    driver.get("file:///C:/Users/user/Desktop/test.html");
    driver.findElement(By.tagName("button")).click();
    Thread.sleep(4000);
    System.out.println("*******************************");
    System.out.println(driver.findElement(By.id("demo")).getText());
    System.out.println("*******************************");
}

и вывод:

'*******************************

Latitude: 13.009112499999999

Longitude: 77.7006038

'*******************************

, нокогда я работаю в режиме без головы ,

public static void main(String[] args) throws InterruptedException {
    ChromeOptions chromeOptions = new ChromeOptions();
    chromeOptions.addArguments("headless");
    WebDriver driver = new ChromeDriver(chromeOptions);
    driver.get("file:///C:/Users/user/Desktop/test.html");
    driver.findElement(By.tagName("button")).click();
    Thread.sleep(4000);
    System.out.println("*******************************");
    System.out.println(driver.findElement(By.id("demo")).getText());
    System.out.println("*******************************");
}

Вывод:

'********************************

'*******************************

Чего мне не хватает?Мне пришлось использовать только безголовый, и я не могу включить геолокацию в режиме безголового хрома.

1 Ответ

0 голосов
/ 02 февраля 2019

Попробуйте. Посмотрите, работает ли это.

 WebElement element = driver.findElement(By.xpath("//p[@id='demo']"));
 String html = element.getAttribute("innerHTML");
 System.out.println(html);
...