Selenium webdriver版本问题

时间:2015-11-15 11:25:48

标签: java scala selenium

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

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)
  }

}

基本上,您应该访问网址,点击“查找邮政编码”'选项卡,插入地址,按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 个答案:

答案 0 :(得分:1)

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

  1. 元素的XPath是错误的。
  2. 操作之间没有足够的等待时间。
  3. 我是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());
    }
    

    希望这会对你有所帮助。