2012-04-26 1 views
0
에서 아이폰 OS 시뮬레이터/장치를 작동하지

시나리오 : - 필드입니다 - 우리는 AJAX 를 통해 오류를 확인 등록 양식이 : 전자 우편, confEmail는 FNAME, LNAME은 PWD는 confPwd 는 - 오류 검사 할 때 발생을 사용자는 "전자 메일"필드에 입력하고 탭은 "confEmail"필드에 입력하십시오. "pwd"및 "confPwd"필드와 동일 - "전자 메일"필드에 "test"를 입력 한 다음 "confEmail"인 다음 필드로 이동하는 사용자 동작을 모방 한 자동화 스크립트를 작성하려고합니다. 이것은 AJAX 체크를 호출하고 "잘못된 이메일 주소"전달 키보드 이벤트는 WebDriver

시험 구성에 대한 오류가 발생한다 : - 테스트는 리눅스 작성이 - 맥 (물론)에 아이폰 시뮬레이터에서 실행

코드의이 작품은 입력 이메일 주소 : driver.findElement (By.cssSelector (Locator.getLocator ("mobilebuy-> emailAddressField"))). sendKeys ("test");

sendKeys는 해당 필드에서 포커스를 이동하지 않으므로 AJAX가 실행되도록 TAB/클릭하여 다음 필드로 보냅니다. 분명히, 그렇게하는 것은 효과가 없습니다. AJAX는 절대 실행되지 않으며 오류 메시지가 나타나지 않습니다. 아이폰 시뮬레이터에서 수동으로 시뮬레이트 할 때 볼 수있다.

다음 필드로 이동해야합니다. driver.findElement (By.cssSelector (Locator.getLocator ("mobilebuy-> emailAddressField"))). sendKeys (Keys.TAB); .

또는

이 AJAX를 해고해야 다음 필드를 클릭합니다

: driver.findElement (By.cssSelector (Locators.getLocator ("mobilebuy-> confEmailAddressField")))을 클릭합니다();

이 문제를 어떻게 처리 할 수 ​​있습니까? 내가 자세히 보았지만, "탭"키는 유니 코드로 전달하려고 시도했지만 키가 작동하지는 않습니다. 나는 (심지어 몸 자체에 수) 텍스트 필드에 있지만, 일부 부모 요소에 반드시 SendKeys 매크로를 사용하려고 할 정말 절망적 인 경우에

답변

1

우선 FirefoxDriver 만 (http://code.google.com/p/selenium/wiki/TipsAndTricks에 따라) Action 클래스를 지원하지만 InternetExplorerDriver도 지원해야합니다. 그 후, 나는 액션 클래스를 사용하여 Ajax를 발사하고 그

을 작동하는 듯 필드에 클릭을 보내 - 나는 형태 에 유형의 항목이 입력 방법이 - :

이가 다음 단계를 사용하여 작업 할 수있어
// (WebDriver, email, confEmail, fname, lname, pwd, confPwd) 
TypeRegistrationData(driver, "test/[email protected]", "", "", "", "", ""); 

// action builder that tabs to next field 
WebElement we = driver.findElement(By.cssSelector(Locators.getLocator("buy->emailAddressField"))); 
Actions builder = new Actions(driver); 

builder.click(we); // this fires up the ajax that is expected 
0

시도하여 조치

Actions builder = new Actions(driver); 
builder.keyDown(Keys.TAB).keyUp(Keys.TAB); 
builder.build().perform(); 

을 체인.