繁体   English   中英

Selenium Webdriver版本问题

[英]Selenium webdriver issue with version

我正在尝试编写一个提取爱沙尼亚邮政编码的脚本。 这是代码:

import com.gargoylesoftware.htmlunit.BrowserVersion
import org.openqa.selenium.{By, WebDriver}
import org.openqa.selenium.htmlunit.HtmlUnitDriver

object Application {

  def main(args: Array[String]) {
    val  driver = new HtmlUnitDriver(BrowserVersion.CHROME)
    driver.setJavascriptEnabled(true)
    query(driver, "Pelguranna 9")
  }

  def query(driver: WebDriver, query: String) {
    driver.get("https://www.omniva.ee/eng")

    val tab = driver.findElement(By.xpath("//*[@class='search-tabs']/li[1]"))
    tab.click()

    val name = driver.findElement(By.name("zip_address"))
    name.sendKeys(query)
    name.submit()

    val result = driver.findElement(By.xpath("//*[@id='zip_container']/p[0]"))
    print(result)
  }

}

基本上,您应该转到URL,单击“查找邮政编码”选项卡,插入地址,按Enter键并获取第一个结果。

但我收到一个错误:

Driver info: driver.version: unknown
    at org.openqa.selenium.htmlunit.HtmlUnitWebElement.verifyCanInteractWithElement(HtmlUnitWebElement.java:282)
    at org.openqa.selenium.htmlunit.HtmlUnitWebElement.sendKeys(HtmlUnitWebElement.java:326)
    at Application$.query(grab.scala:20)
    at Application$.main(grab.scala:10)
    at Application.main(grab.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

我以前从未写过这样的东西,所以不知道这个错误是什么意思。 谁能说我的代码有什么问题?

我发现您的代码存在以下问题。

  1. 元素的XPath错误。
  2. 两次操作之间没有足够的等待时间。

我是JAVA专家,可以使用以下代码获取邮政编码。 我相信您可以对python进行更改。

public static void main(String[] args) throws InterruptedException {
    WebDriver driver = new HtmlUnitDriver(BrowserVersion.CHROME);
    ((HtmlUnitDriver) driver).setJavascriptEnabled(true);
    test(driver, "Pelguranna 9");
}

public static void test(WebDriver driver, String query) throws InterruptedException {
    driver.get("https://www.omniva.ee/eng");

    Thread.sleep(5000);

    WebElement tab = driver.findElement(By.xpath("//a[.='Find a ZIP code'][@href='#search-zip']"));
    tab.click();

    WebElement name = driver.findElement(By.name("zip_address"));
    name.sendKeys(query);
    name.submit();

    Thread.sleep(10000);

    WebElement result = driver.findElement(By.xpath("//*[@id='zip_container']/p/span"));
    System.out.println(result.getText());
}

希望这对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM