2016-09-23 2 views
4

QAF과 함께 Selenium Webdriver를 사용하고 있습니다. 내가 직면 한 문제는 웹 페이지에서 요소를 찾는 것과 관련이 있습니다. 요소가 적을 경우 다른 로케이터가 다른 시간에 작동합니다.webdriver로 webelement를 찾기위한 다중 위치 지정자

예를 들어 - 때로는 name = nameA가 작동하고 때로는 name = nameB (AUT의 다른 환경에 따라 달라질 수 있습니다. 단서가 없습니다). 아래

찾기 코드 :

public class HomePage extends WebDriverBaseTestPage<WebDriverTestPage> { 


    @FindBy(locator="name=nameA") 
    private QAFWebElement btnSomeElement; 


    @Override 
    protected void openPage(PageLocator locator, Object... args) { 
     driver.get("/"); 
    } 
} 

내가이 문제를 통해 올해야합니까?

+0

환경/플랫폼에 따라 다른 로케이터가 있습니까? – user861594

+1

네, QA/스테이징/생산성 로케이터 변경과 같은 별도의 환경에서 xpath 또는 다른 전략을 사용하여 과부하를 걸지 마십시오. – Shalin

답변

3

이미 QAF를 사용하고있는 경우 이미 해당 솔루션을 사용할 수 있습니다. 먼저 로케이터 저장소 ( )를 사용해야합니다. 페이지에서 로케이터를 하드 코딩하는 대신 로케이터 키를 제공하십시오. 예를 들어

:

page.loc 페이지 클래스에서 파일

my.ele.locator=<locatorStretegy>=<locator> 
my.ele.locator=name=elemName 

:

@FindBy(locator = "my.ele.loc") 
private QAFWebElement btnSomeElement; Now coming to your problem, if most of the locator very with environment then you can utilize 

resource management capabilities of QAF. 다른 경우에는 QAF에서 제공 한 alternate locator strategy을 사용할 수 있습니다. 예를 들어 :

my.ele.locator=['css=.cls#eleid','name=eleName','name=eleName2'] 
my.ele.locator=['name=eleNameEnv1','name=eleNameEnv2'] 
+1

이 문제가 해결되었습니다. – Shalin

1

두 환경과 일치하는 선택기가 있어야합니다. css 또는 xpath 선택기를 사용하십시오.

도움이 필요한 경우 섹션/요소가 포함 된 HTML 스 니펫을 추가하십시오.

당신이 이름을 선택하고이 이름이 변경되는 것을 가정하면, 같은 양의 이름과 일치하는 선택기를 작성할 수 있습니다

CSS : [name=nameA], [name=nameB]
XPath는 : //*[@name='nameA' or @name='nameB']

+0

가끔씩 로케이터를 제공하기가 어려워집니다. 예 : 모바일 네이티브의 경우 특히 iOS – user861594

0

그것은 로케이터가 매우 일반적이다 때때로 변경됩니다. 일부는 특히 테이블 행에서 동적 인 요소입니다. 요소를 찾으려면 xpath와 같은보다 구체적인 위치 지정자를 사용하는 것이 좋습니다.

@FindBy(locator = "xpath=//button[text()='ButtonName']") 
private QAFWebElement btnSomeElement; 
0
btn.login.page.logon.button = {\"locator\":[\"xpath=//div[contains(@id,'logonbutton')]//span[contains(text(),'Logon')]\",\"xpath=//*[contains(text(),'Logon') or @id='__screen0-logonBtn']\"]} 

이것은 QAF에서 여러 로케이터를 사용하여 일반 텍스트 파일에 대해 동일한의 예입니다. 나를 위해 일합니다.

관련 문제