Не удается найти элемент при запуске Chrome в режиме без головы - PullRequest
0 голосов
/ 18 января 2019

@ DebanjanB - Привет. Я автоматизировал загрузку веб-сайта с помощью селена Chrome драйвер. Однако, когда я запускаю Chrome в режиме без головы, он не может найти флажок, который нужно нажать, чтобы загрузить файл. Можете ли вы помочь мне разобраться с этой проблемой?

Ниже мой код:

import org.openqa.selenium.chrome.ChromeOptions
import org.openqa.selenium.chrome.ChromeDriver
import org.openqa.selenium.By
import scala.collection.mutable.HashMap

object selen extends App{

  val chromeOptions = new ChromeOptions()
  chromeOptions.addArguments("--headless")
  new ChromeDriver(chromeOptions)
  val driver = new ChromeDriver(chromeOptions)

  driver.get("url")

  driver.findElement(By.id("isc_S")).sendKeys("Username")
  driver.findElement(By.id("isc_V")).sendKeys("Password")
  driver.findElement(By.id("isc_Z")).click
  println("Logged in")

  driver.manage.window.maximize
  Thread.sleep(5000);

  driver.findElement(By.cssSelector("#isc_36 > table > tbody > tr > td")).click()
  println("clicked Dashboard")
  Thread.sleep(5000);

  var count = 1

  for (i <- 1 to 9) {
    for (j <- 1 to 5) {
      driver.findElement(By.xpath("//*[@id=\"isc_5Ptable\"]/tbody/tr[" + count + "]/td[1]/div/span")).click()
      driver.findElement(By.id("isc_64")).click()
      Thread.sleep(4000)
      driver.findElement(By.xpath("//*[@id=\"isc_5Ptable\"]/tbody/tr[" + count + "]/td[1]/div/span")).click()
      count+=1
    }

    var count2 = 10
    while(count2 > 0)
    {
      driver.findElement(By.xpath("//*[@id=\"isc_5Q\"]/img[3]")).click()
      count2 -= 1
    }
  }
  driver.close()
}

Ниже приведен HTML-код флажка, который не находится в драйвере безголового Chrome:

span style = "display: inline-block; размер фона: 100% 100%; background-image: url (" https://ford -ddlive.clifford-thames.com / datadistribution / sc / skins / ford / images / DynamicForm / unchecked.png "); ширина: 13px; высота: 13px; вертикальное выравнивание: text-top; margin-left: 2px; margin-right: 2px " eventpart = "valueicon">

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Возможно, ваш элемент не находится в области просмотра, потому что безголовый хром может иметь разрешение, отличное от вашего обычного рабочего пространства.

Итак, попробуйте максимизировать хром без головы, добавив chromeOptions.addArguments("--start-maximised") после строки chromeOptions.addArguments("--headless").

0 голосов
/ 18 января 2019

Попробуйте использовать явное ожидание (FluentWait) вместо sleep () и вместо findElement ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...