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은 표시하지 않습니다.
[Element.Click은 .Net에서 PhantomJS selenium webdriver를 사용할 때 실행되지 않습니다.] (http://stackoverflow.com/questions/19663963/element-click-not-executed-when-using-phantomjs-selenium- webdriver-in-net) –
안녕하세요, 창 크기를 변경하려고했지만 문제가 해결되지 않았습니다. 이 문제의 근본 원인은 어떤 이유로 PhantomJSDriver는 요소가 유효하지 않은 상태이므로 탭을 클릭하지 못하게 할 것이라고 생각합니다. 그러나이 잘못된 상태는 PhantomJSDriver에서만 발생합니다. – SpartaSixZero
'FindElement'와'Click'을 분리하여 실제로 어떤 연산이 그것을 발생시키는 지 확인할 수 있습니까? '.../li [2]'대신'.../li [2]/a'를 클릭하려고 했습니까? –