在无头模式下运行chrome时无法找到元素

时间:2019-01-18 09:37:16

标签: scala selenium selenium-webdriver selenium-chromedriver

@DebanjanB-您好。我已经使用Selenium 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; background-size:100%100%; background-image:url(” https://ford-ddlive.clifford-thames.com/datadistribution/sc/skins/ford/images/DynamicForm/unchecked.png");width:13px;height:13px;vertical-align:text-top;margin-left:2px;margin-right:2px“ eventpart =” valueicon“>

2 个答案:

答案 0 :(得分:0)

考虑使用显式等待(FluentWait)代替sleep()和findElement()

答案 1 :(得分:0)

也许您的元素不在视口中,因为无头的chrome可能具有与普通工作区不同的分辨率。

因此,尝试通过在chromeOptions.addArguments("--start-maximised")行之后添加chromeOptions.addArguments("--headless")来最大化无头chrome。