2016-08-11 3 views
1

두 개의 텍스트 필드에 텍스트를 입력하려고하는데 거의 모든 요소 로케이터, 자바 스크립트 트릭을 시도했지만 텍스트는 필드에 입력되지 않습니다. 테스트는 통과하지만 아무 텍스트도 입력되지 않았 음을 알 수 있습니다.WebDriver를 사용하여 텍스트 필드에 텍스트를 입력 할 수 없습니다.

I가 연습을하고있어이 사이트는 https://www.chegg.com/auth?action=login&redirect=http%3A%2F%2Fwww.chegg.com%2F&reset_password=0

두 필드는 이메일과 비밀번호 필드입니다이다.

이 작동하지만, 코드의 조각 제공하지 않습니다해야합니다

WebElement emailField = driver.findElement(By.name("email")); 

WebElement passwordField = driver.findElement(By.name("password")); 

emailField.sendKeys("whatever"); 

passwordField.sendKeys("whatever"); 

내가 잘못하고있는 중이 야 무엇을?

+0

, 이름 속성 값 매칭 첫 번째 요소를 위치가 반환됩니다. 나는 당신이 성공 또는 실패를 알기 위해 올 것입니다 그래서 테스트에서 어떤 사건을 수행뿐만 아니라 더 정확한 테스트를 위해 xpath를 사용하는 것이 좋습니다 테스트에 중요하지 않는 텍스트 – gks

답변

0

sendkeys 전에 현재 사용하고있는 By.name() 로케이터를 보내보십시오 보낼 수없는 경우

WebElement emailField = driver.findElement(By.xpath("//div[@id='eggshell-7']//input[@name='email']")).sendKeys("whatever"); 

페이지에 보이지 않는 첫 번째 요소와 상호 작용하고 있습니다. 즉, 당신이 문제가 왜, 당신이 올바른 요소를 찾는 몇 가지 다른 로케이터를 시도해야, 난 당신이 아래 By.cssSelector()를 사용하려고 제안 : - By.name 전략으로

WebElement emailField = driver.findElement(By.cssSelector(".C-common-auth-signin-component input[name = 'email']")); 
emailField.sendKeys("whatever"); 

WebElement passwordField = driver.findElement(By.cssSelector(".C-common-auth-signin-component input[name = 'password']")); 
passwordField.sendKeys("whatever"); 
+0

감사합니다. 작동했습니다! – user6084345

0

로케이터와 일치하는 항목이 여러 개 있기 때문에 찾을 수없는 이유가 있습니다. 이런 식으로 찾아보십시오 : 당신은 아직도 보이지 않는 두 번째 먼저 clear()하여 제공 website, 두 요소의 사실

+0

아니,이' xpath'는'div' id가 동적으로 변경되기 때문에 작동하지 않습니다. :) –

+0

바뀌면 contains를 사용하여 부분 일치를 시도해 볼 수 있습니다. 텍스트 상자가 첫 번째 일치하므로 보이게됩니다 : // div [(@ id, 'eggshell -')] // 입력 [@ 이름 = '이메일']) [1] – ahly212

+0

답변 해 주셔서 감사합니다. – user6084345