문제

우리는 기존 코드 기반에 대해 Selenium 회귀 테스트를 실행하고 있으며 웹 앱의 특정 화면은 중간 단계를 위해 팝업을 사용합니다.

현재 테스트에서는 다음 명령을 사용합니다.

// force new window to open at this point - so we can select it later
selenium().getEval("this.browserbot.getCurrentWindow().open('', 'enquiryPopup')");
selenium().click("//input[@value='Submit']");
selenium().waitForPopUp("enquiryPopup", getWaitTime());
selenium().selectWindow("enquiryPopup");

...작동합니다 대부분의 경우.테스트가 실패하는 경우가 가끔 있습니다. waitForPopUp() 와 일치하다

com.thoughtworks.selenium.SeleniumException: Permission denied

누구든지 더 나은 것을 제안할 수 있습니까? 믿을 수 있는 방법?

또한 우리는 주로 IE6과 7에서 이러한 테스트를 실행합니다.

도움이 되었습니까?

해결책

효과가있다!!셀레네즈를 선호하는 사람들을 위해 더 쉽게 만들었습니다.

이것은 IE7(일반 모드)을 사용하는 데 효과적이었습니다.

정말 번거롭습니다.SO에 대해 하늘의 스파게티 괴물에게 감사드립니다. 그렇지 않으면 IE에서 이 작업을 수행할 수 있는 방법이 없습니다.

<tr>
    <td>getEval</td>
    <td>selenium.browserbot.getCurrentWindow().open('', 'windowName');</td>
    <td></td>
</tr>
<tr>
    <td>click</td>
    <td>buttonName</td>
    <td></td>
</tr>
<tr>
    <td>windowFocus</td>
    <td>windowName</td>
    <td></td>
</tr>
<tr>
    <td>waitForPopUp</td>
    <td>windowName</td>
    <td>3000</td>
</tr>
<tr>
    <td>selectWindow</td>
    <td>windowName</td>
    <td></td>
</tr>

다른 팁

*iehta 모드에서 실행 중인 경우 여기저기서 몇 가지 결함이 발생하게 됩니다.우리는 직장에서 Selenium을 운영하고 있는데 IE와 AJAX에 문제가 많은 것 같습니다.

그러나 현재 겪고 있는 문제는 Selenium이 완전히 로드되기 전에 다른 창의 구성 요소에 액세스하려고 시도하는 문제인 것 같습니다.기본 시간 제한 범위가 어떻게 설정되어 있는지 잘 모르겠지만 문제를 해결하려면 60(60000ms)초 정도까지 늘리는 것이 좋습니다.

그 외에는 훨씬 더 신뢰할 수 있는 결과를 생성하는 Firefox(*chrome 사용)에서 테스트를 실행하는 것이 좋지만 때로는 비즈니스 요구 사항으로 인해 단순히 불가능할 수도 있습니다.

방금 다른 셀레늄 기능을 추가해 보았습니다. windowFocus():

// force new window to open at this point - so we can select it later
selenium().getEval("this.browserbot.getCurrentWindow().open('', 'enquiryPopup')");
selenium().click("//input[@value='Submit']");
selenium().windowFocus("enquiryPopup");
selenium().waitForPopUp("enquiryPopup", getWaitTime());
selenium().selectWindow("enquiryPopup");

로컬에서 실행했을 때 테스트가 성공했지만 생성/초점/대기/선택과 같은 모든 메서드 호출에서만 성공했습니다.

빌드 서버에서 모든 테스트를 실행하도록 할 예정인데, 그것도 성공하면 그걸로 라이브러리 함수를 만들겠습니다...!

팝업 창 내에서 iframe을 선택하고 양식을 작성해야 했습니다.Selenium이 내 iframe을 찾을 수 없는 selectWindow cmd를 사용하는 데 문제가 있어서 명령을 제거했습니다.

이 selenese는 나에게 잘 작동했습니다(iframe 제목 및 ID = account_frame).

<tr>
  <td>click</td>
  <td>//a[@class='item_add']</td>
  <td></td>
</tr>
<tr>
  <td>windowFocus</td>
  <td>account_frame</td>
  <td></td>
</tr>
<tr>
  <td>waitForPopUp</td>
  <td>account_frame</td>
  <td>10000</td>
</tr>

문제를 일으키는 통화 주변에 대기 문을 추가해 보세요.

나는 전에도 같은 오류를 겪었고 내가 할 수 있었던 유일한 방법은 확실하게 System.Threading.Thread.Sleep(5000)을 호출하여 문제를 해결했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top