2016-12-14 6 views
-1

Wait for page load in SeleniumКак заставить Селен подождать до следующей страницы?

Я новичок в тестировании кодирования и автоматизации. Все, что я знаю в кодировании, это if-else, while, do while и for и т. Д. Незначительные вещи вроде этого. Выше была ссылка, которую я пытался проверить, чтобы сделать Селен некоторое время, но не смог этого сделать. Ниже приведен код, который я написал для входа в мою учетную запись gmail, но не работает. Может ли кто-нибудь исправить код? Я думаю, мне нужно отложить действие селена и сначала загрузить страницу.

public class loginGmail { 

    public static void main(String[] args) 
    { 
     System.setProperty("webdriver.gecko.driver", "E:\\eclipse\\Drivers\\geckodriver.exe"); 
     FirefoxDriver d = new FirefoxDriver(); 
     d.get("https://www.gmail.com"); 
     d.findElement(By.id("Email")); 
     WebElement email = d.findElement(By.id("Email")); 
     email.sendKeys("[email protected]"); 

     d.findElement(By.name("signIn")); 
     WebElement next = d.findElement(By.name("signIn")); 
     next.click(); 



     d.findElement(By.id("Passwd")); 
     WebElement pass = d.findElement(By.id("Passwd")); 
     pass.sendKeys("********"); 

     d.findElement(By.id("signIn")); 
     WebElement signIn = d.findElement(By.id("signIn")); 
     signIn.click(); 
    } 
} 
+1

'но не работает' .. Почему? Что происходит? – Andersson

ответ

0

У меня нет учетной записи gmail, поэтому я не могу проверить это, но это должно сработать. Я бы не подумал, что вам нужно будет ждать загрузки начальной страницы, но, может быть, и так. Я добавил в начале ожидания и удалил много ненужного кода. Вы находили каждый элемент дважды. Кроме того, если вам не нужен элемент более чем для одной вещи (щелкните, sendKeys и т. Д.), Тогда нет необходимости хранить его в переменной. Просто используйте его в одном лайнере. Кроме того, позвоните своему водителю driver ... никто не знает, что такое d есть. Вы хотите назвать свои переменные так, чтобы было ясно, что они содержат. Сохранение нескольких нажатий клавиш, которые делают что-то менее понятное, не позволяет сэкономить время и с помощью современных IDE, вы можете просто использовать функции intellisense для автоматического заполнения имени драйвера нажатием клавиши.

new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.id("Email"))) 
     .sendKeys("[email protected]"); 
// driver.findElement(By.name("signIn")).click(); // don't think this is needed? 
driver.findElement(By.id("Passwd")).sendKeys("********"); 
driver.findElement(By.id("signIn")).click();