J'automatise une page Web pour enregistrer les informations utilisateur. Cette page nécessite de saisir une adresse dans la zone de saisie, puis Google map listera l'adresse correcte. Je dois choisir l'adresse google map. Comment faire cela dans le sélénium. Voici l'image de la fonction.
Voici mon code en 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");
3 Réponses :
J'ai essayé quelque chose qui ne fonctionne que si le texte que vous donnez est unique:
driver.findElement(By.id("addressInput")).sendKeys(Keys.ARROW_DOWN);
Dans la fonctionnalité Try / Catch, j'ai cette ligne:
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); } } }
si vous savez que la première option dans la liste déroulante des adresses est ce que vous voulez, vous pouvez le faire après avoir effectué les clés d'envoi:
driver.findElements(By.cssSelector(".pac-item")).get(0).click();
J'ai essayé cette option mais il y a d'abord une erreur: ce n'est pas ("...") [0] mais ("..."). Get (0) puisque le résultat est un tableau et non une liste :)
Pour cliquer ()
sur le pac-matched suggestion automatique vous devez induire WebDriverWait pour le elementToBeClickable ()
et vous pouvez utiliser l'une des Stratégies de localisation :
cssSelector
:
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();
xpath
:
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();
Instantané du navigateur:
Veuillez modifier votre question et inclure le code HTML correspondant.