2016-12-14 3 views
-1

Wait for page load in Selenium다음 페이지가로드 될 때까지 셀렌을 대기 상태로 만드는 방법은 무엇입니까?

코딩 및 자동화 테스트에 익숙하지 않습니다. 코딩에서 내가 아는 것은 if-else, while, do whilefor 등입니다. 그와 같은 사소한 것들. 위의 내용은 Selenium을 잠시 기다려주기 위해 체크 아웃을 시도한 링크이지만 일어날 수는 없습니다. 다음은 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 계정이 없어서 테스트 할 수 없지만 제대로 작동합니다. 나는 초기 페이지로드를 기다릴 필요가 있다고 생각하지 않았지만 아마 그렇게 할 것입니다. 나는 처음에 기다렸다가 불필요한 코드를 많이 삭제했다. 각 요소를 두 번 찾았습니다. 또한 하나 이상의 요소 (click, 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();