如何使用Selenium和Java从google地图的自动建议中选择地址
我正在自动注册用户信息的网页。该页面要求在输入框中输入地址,然后谷歌地图将列出正确的地址。我必须选择谷歌地图地址。如何在硒中做到这一点。这是函数的图像 这是我用Selenium-Java编写的代码如何使用Selenium和Java从google地图的自动建议中选择地址,java,selenium,xpath,css-selectors,webdriverwait,Java,Selenium,Xpath,Css Selectors,Webdriverwait,我正在自动注册用户信息的网页。该页面要求在输入框中输入地址,然后谷歌地图将列出正确的地址。我必须选择谷歌地图地址。如何在硒中做到这一点。这是函数的图像 这是我用Selenium-Java编写的代码 public void signup() throws InterruptedException { driver.get("https://app.getjarvis.com.au/sign-up"); driver.manage().window().setSiz
public void signup() throws InterruptedException {
driver.get("https://app.getjarvis.com.au/sign-up");
driver.manage().window().setSize(new Dimension(801, 721));
driver.findElement(By.id("addressInput")).click();
driver.findElement(By.id("addressInput")).click();
driver.findElement(By.id("addressInput")).sendKeys("Indian Drive, Keysborough VIC, Australia");
Thread.sleep(3000);
Select drpdwn = new Select(driver.findElement(By.id("addressInput")));
drpdwn.selectByVisibleText("Indian Drive, Keysborough VIC, Australia");
我尝试了一些只有在您给出的文本是唯一的情况下才有效的方法:
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.Select;
import java.lang.*;
import org.openqa.selenium.WebElement;
import java.util.*;
class Main {
public static void main(String args[]) {
System.setProperty("webdriver.gecko.driver", "/home/avionerman/Documents/Java/geckodriver");
WebDriver driver = new FirefoxDriver();
driver.get("https://app.getjarvis.com.au/sign-up");
driver.manage().window().maximize();
driver.findElement(By.id("addressInput")).click();
driver.findElement(By.id("addressInput")).sendKeys("Indian Drive, Keysborough VIC, ");
driver.findElement(By.id("addressInput")).click();
try {
Thread.sleep(3000);
driver.findElement(By.id("addressInput")).sendKeys(Keys.ARROW_DOWN);
} catch (InterruptedException e) {
System.out.println("Error: " + e);
}
}
}
在Try/Catch功能中,我有以下几行:
driver.findElement(By.id("addressInput")).sendKeys(Keys.ARROW_DOWN);
实际上,当您键入所需的文本时,如果该选项只有一个,您可以对机器人说,按下箭头以选择该选项。正如你在我的例子中看到的,文本还没有准备好。这是“印第安路,凯斯伯勒维克”,而不是“印第安路,凯斯伯勒维克,澳大利亚”,因为我想看看这个建议。因此,为了确定您是否要输入文本,并且结果只有一个(唯一),此代码将始终通过按向下箭头按钮(sendKeys(Keys.arrow_down))从列表中选择选项
如果您需要进一步升级,请访问此建议生成器的官方谷歌页面 如果您知道地址下拉列表中的第一个选项是您想要的,您可以在执行发送键后执行此操作:
driver.findElements(By.cssSelector(".pac-item")).get(0).click();
要单击匹配的pac上的()
,您需要对元素进行归纳,使其可伸缩()
,您可以使用以下任一选项:
:css选择器
driver.get("https://app.getjarvis.com.au/sign-up"); new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input#addressInput"))).sendKeys("Indian Drive, Keysborough VIC, Australia"); new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("span.pac-item-query>span.pac-matched"))).click();
:xpath
driver.get("https://app.getjarvis.com.au/sign-up"); new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='addressInput']"))).sendKeys("Indian Drive, Keysborough VIC, Australia"); new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//span[@class='pac-item-query']/span[@class='pac-matched']"))).click();
- 浏览器快照:
我尝试了此选项,但首先出现了一个错误:它不是(“…”[0],而是(“…”)。获取(0),因为结果是数组而不是列表:)请回答您的问题并包含相关的HTML。