我正在尝试编写一个获取爱沙尼亚邮政编码的脚本。这是代码:
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)
我以前从未写过这样的东西,所以不知道这个错误意味着什么。有人能说我的代码有什么问题吗?
答案 0 :(得分:1)
我发现您的代码存在以下问题。
我是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());
}
希望这会对你有所帮助。