2017-10-17 12 views
0

Je possède ce spectacle de code ci-dessous:Comment puis-je faire sélénium attendre jusqu'à ce que la page suivante est chargée avec la même URL et ont les mêmes champs

driver.findElement(By.id("submit")).sendKeys(Keys.ENTER); 
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); 
driver.findElement(By.id("search-trigger")).sendKeys(Keys.ENTER); 
driver.findElement(By.id("search-trigger")).sendKeys("Shampoo"); 
driver.findElement(By.id("search-trigger")).sendKeys(Keys.ENTER); 

Je veux rechercher un produit et l'option recherche est avant et après la page de connexion, mais ici, je veux le faire après la page de connexion J'ai utilisé

driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS); 

mais il ne fonctionne pas et je ne peux pas utiliser

WebElement “”= driver.findElement(By.id("")); 

comme l'option de recherche est sur les deux pages et URL reste la même après la connexion aussi

Répondre

0

par ma compréhension, bref, vous voulez vous assurer utilisateur connecté avant de rechercher un produit. Cependant, vous ne pourrez pas utiliser WebElement "" = driver.findElement (By.id (""));

Avez-vous essayé d'attendre explicitement la présence de texte nom d'utilisateur/logout ... etc

WebElement element = wait.until(ExpectedConditions.elementIsVisible(By.id(>someid>))); 

Ci-dessous travaillé pour moi, ai essayé de chercher Samsung après la connexion à Flipkart:

public static void f() throws InterruptedException 
{  
    By signin = By.xpath(".//*[@id='container']/div/header/div[1]/div[1]/div/ul/li[9]/a"); 
    Thread.sleep(2000); 
    By mobile = By.xpath("html/body/div[2]/div/div/div/div/div[2]/div/form/div[1]/input"); 
    By password = By.xpath("html/body/div[2]/div/div/div/div/div[2]/div/form/div[2]/input"); 
    By login = By.xpath("html/body/div[2]/div/div/div/div/div[2]/div/form/div[3]/button"); 
    By myaccount = By.xpath(".//*[@id='container']/div/header/div[1]/div[1]/div/ul/li[8]/a"); 
    By search = By.xpath(".//*[@id='container']/div/header/div[1]/div[2]/div/div/div[2]/form/div/div[1]/div/input");  
    //geko driver for firefox 
    System.setProperty("webdriver.gecko.driver", "path of geckodriver.exe"); 
    System.setProperty("webdriver.chrome.driver", "path of chromedriver.exe"); 
    driver = new ChromeDriver(); 

    driver.get("https://www.flipkart.com/"); 
    driver.findElement(signin).click();; 
    driver.findElement(mobile).sendKeys("xxxxxxxxx"); 
    driver.findElement(password).sendKeys("xxxxxxxx"); 
    driver.findElement(login).click(); 

    WebDriverWait wait = new WebDriverWait (driver, 10); 
    wait.until(ExpectedConditions.elementToBeClickable(myaccount)); 
    driver.findElement(search).sendKeys("samsung");  
}