Я хочу автоматизировать страницу регистрации, которая требует выбора адреса на карте Google. Как это сделать в селене? - PullRequest
1 голос
/ 03 мая 2020

Я автоматизирую веб-страницу для регистрации информации о пользователе. Эта страница требует ввода адреса в поле ввода, после чего на карте Google будет указан правильный адрес. Я должен выбрать адрес карты Google. Как это сделать в селене. Вот изображение функции.

Screenshot

Вот мой код в Selenium - Java.

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");

Ответы [ 2 ]

1 голос
/ 03 мая 2020

, если вы знаете, что первая опция в раскрывающемся списке адресов - это то, что вам нужно, вы можете сделать это после того, как нажмете клавиши отправки:

driver.findElements(By.cssSelector(".pac-item")).get(0).click();
0 голосов
/ 03 мая 2020

Я попробовал что-то, что работает, только если текст, который вы даете, является уникальным:

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

На практике Когда вы набираете нужный текст, если опция только одна, вы можете сказать боту нажать стрелку вниз, чтобы выбрать опцию. Как вы можете видеть в моем примере текст не готов. Это «Индиан Драйв, Кейсборо VI C» вместо «Индиан Драйв, Кейсборо VI C, Австралия», потому что я хотел увидеть это предложение. Итак, чтобы сделать вывод, что если вы введете свой текст, а результат будет только один (уникальный), этот код всегда будет выбирать параметр из списка, нажимая кнопку со стрелкой вниз (sendKeys (Keys.ARROW_DOWN)).

Если вам нужно увеличить его дальше, здесь - это официальная страница Google для этого генератора предложений.

...