0

jQuery 사용자 탭 쌍의 두 번째 탭을 선택할 수 없어 이상한 오류가 발생했습니다. 이 기능은 ChromeDriver와 완벽하게 작동하지만 PhantomJSDriver에서는 실패합니다.PhantomJSDriver가 jQuery 사용자 탭을 선택하지 못했습니다.

내 PhantomJS 버전 : 1.9.8

jQuery를 버전 : 1.10.2

의 jQuery UI 버전 : 1.10.3

IDE : VS2012

당신의 사본을 찾을 수 있습니다

내 page : http://jsfiddle.net/anjw2gnr/1/

이것은 관련 페이지의 부분입니다.

[TestMethod, TestCategory("SampleTest")] 
public void SampleJQueryTabsTest() 
{ 
    driver.FindElement(By.XPath("//div[@id='tabs']/ul/li[1]")).Click(); 

    driver.FindElement(By.Id("tabOneBtn")).Click(); 

    // assert that count is now 1 
    Assert.AreEqual("1", driver.FindElement(By.Id("tabOneCount")).Text); 

    // Click the second tab 
    driver.FindElement(By.XPath("//div[@id='tabs']/ul/li[2]")).Click(); 

    driver.FindElement(By.Id("tabTwoBtn")).Click(); 

    // assert that count is now 1 
    Assert.AreEqual("1", driver.FindElement(By.Id("tabTwoCount")).Text); 
} 

가 ChromeDriver과 실행, 모든 것이 통과 : 17,451,515,
<div id="tabs"> 
    <ul> 
     <li> 
      <a href="#tabs-1">Tab 1</a> 
     </li> 
     <li> 
      <a href="#tabs-2">Tab 2</a> 
     </li> 
    </ul> 
    <div id="tabs-1"> 
     <button id="tabOneBtn">I'm in tab one</button> 
     <p id="tabOneCount"></p> 
    </div> 
    <div id="tabs-2"> 
     <button id="tabTwoBtn">I'm in tab two</button> 
     <P id="tabTwoCount"></P> 
    </div> 
</div> 

이 내 단위 테스트는 모습입니다. 나는 PhantomJSDriver으로 실행할 때, 그것은 다음 줄에 실패

driver.FindElement(By.Id("tabTwoBtn")).Click(); 

결과 메시지 :

예외 던졌다 MyProject.WebDriverDemo.SampleJQueryTabsTest

시험 방법 : OpenQA.Selenium.ElementNotVisibleException을 { "errorMessage": "요소가 현재 보이지 않아 조작 할 수 없습니다", "요청": { "헤더": { "Accept": "application/json, image/png", "Connection" ContentVoice ":"0 ","Content-Type ":"application/json; "", "post": "", "url": "/ click", "urlParsed": { "anchor": "", "query": "", "file": " 패스 ":"/ 클릭 ","상대 ":"/ 클릭 ","포트 ":" ","호스트 ":" ","비밀번호 ":" ", "user": "", "userInfo": "", "권한": "", 프로토콜 ":" "소스": "/ click", "queryKey": {}, "청크" 클릭 "]},"urlOriginal ":"/ 세션/e22c43f0-7c05-11e4-9c9e-6191347cc85b/요소/% 3Awdc % 3A1417732544176/

이 보이지 않는 문제의 요소가있다}} "를 클릭 버튼이 탭 2에서 클릭되지 않으면 버튼이 보이지 않을 유일한 이유는 탭 2 아래의 버튼입니다. 이것은 단지 ChromeDriver을 PhantomJSDriver 실패가 아닌 이유에

driver.FindElement(By.XPath("//div[@id='tabs']/ul/li[2]")).Click(); 

어떤 아이디어 : 그래서 다음 줄이 PhantomJSDriver을 사용하는 경우에만 실패했지만 의미? PhantomJS에서 가능한 버그입니까?

추가 정보 :

driver.FindElement : 내가 선택한 속성에 대해 다음을 참조

driver.FindElement(By.XPath("//div[@id='tabs']/ul/li[2]")) 

을 : 내가 VS2012에서 빠른 시계에 다음 줄을 넣어

selected '는'OpenQA.Selenium.InvalidElementStateException '유형의 예외를 던졌습니다. bool {OpenQA.Selenium. ('/ div/@ il/li [2]InvalidElementStateException}

그러나 ChromeDriver를 사용하는 경우 Selected 속성은 단순히 false 값만 표시하고 InvalidElementStateException은 표시하지 않습니다.

+0

[Element.Click은 .Net에서 PhantomJS selenium webdriver를 사용할 때 실행되지 않습니다.] (http://stackoverflow.com/questions/19663963/element-click-not-executed-when-using-phantomjs-selenium- webdriver-in-net) –

+0

안녕하세요, 창 크기를 변경하려고했지만 문제가 해결되지 않았습니다. 이 문제의 근본 원인은 어떤 이유로 PhantomJSDriver는 요소가 유효하지 않은 상태이므로 탭을 클릭하지 못하게 할 것이라고 생각합니다. 그러나이 잘못된 상태는 PhantomJSDriver에서만 발생합니다. – SpartaSixZero

+1

'FindElement'와'Click'을 분리하여 실제로 어떤 연산이 그것을 발생시키는 지 확인할 수 있습니까? '.../li [2]'대신'.../li [2]/a'를 클릭하려고 했습니까? –

답변

0

문제는 링크 요소 (a)가 아니라 목록 요소를 클릭하는 것입니다. PhantomJS 'element.click 기능이 항상 작동하지 않는 이유는 아마도 ghostdriver가 클릭 할 수없는 요소를 클릭 할 수없는 이유 일 수 있습니다. 그러나 a 요소를 클릭 할 수 있습니다.

of .../li[2] 대신 .../li[2]/a을 클릭해야합니다.