【问题标题】:Selenium Webdriver wait for the form to load content from ajax callSelenium Webdriver 等待表单从 ajax 调用加载内容
【发布时间】:2018-04-11 06:35:10
【问题描述】:

我有一个已经填写好的表格,但我必须等到

<form id="HostedPaymentMethodPageForm" name="HostedPaymentMethodPageForm" method="post" autocomplete="off">
    <input type="hidden" name="planName" value="test">

    <div class="form-group" id="form-group-creditCardType">
        <div class="form-element" id="form-element-creditCardType">
            <div class="card-image-visa-disabled card-image" id="card-image-container-visa"></div>
            <div class="card-image-mastercard-disabled card-image" id="card-image-container-mastercard"></div>
            <div class="card-image-amex-disabled card-image" id="card-image-container-amex"></div>
            <div class="card-image-discover-disabled card-image" id="card-image-container-discover"></div>
            <input id="input-creditCardType" name="field_creditCardType" type="hidden">
        </div>
    </div>
    <div style="clear:both"></div>

    <input type="text" name="field_creditCardHolderName" id="creditCardHolderName" value="SugarSyncUser" style="display: none;">

    <div>
        <input type="text" name="field_creditCardNumber" id="creditCardNumber" class="field_input" maxlength="16" size="40" placeholder="Card Number" autocomplete="off">


        <input type="text" name="field_cardSecurityCode" id="creditCardCvv" class="field_input" placeholder="CVV" maxlength="4" autocomplete="off">
        <span class="rollOver" data-toggle="tooltip" title="" data-original-title="<img src='/public/image/cvv_preview.jpg'>" data-placement="left">?</span>
    </div>
    <div id="cardDetails">
        <select name="field_creditCardExpirationMonth" id="creditCardExpirationMonth" class="field_select" style="color: rgb(136, 136, 136);">
            <option value="" id="creditCardExpirationMonthValue" class="field_select_value">Month</option>
            <option value="01">01 (Jan)</option>
            <option value="02">02 (Feb)</option>
            <option value="03">03 (Mar)</option>
            <option value="04">04 (Apr)</option>
            <option value="05">05 (May)</option>
            <option value="06">06 (Jun)</option>
            <option value="07">07 (Jul)</option>
            <option value="08">08 (Aug)</option>
            <option value="09">09 (Sep)</option>
            <option value="10">10 (Oct)</option>
            <option value="11">11 (Nov)</option>
            <option value="12">12 (Dec)</option>
        </select>
        <select name="field_creditCardExpirationYear" id="creditCardExpirationYear" class="field_select" style="color: rgb(136, 136, 136);">
            <option value="" id="creditCardExpirationYearValue" class="field_select_value">Year</option>
            <option value="2017">2017</option>
            <option value="2018">2018</option>
            <option value="2019">2019</option>
            <option value="2020">2020</option>
            <option value="2021">2021</option>
            <option value="2022">2022</option>
            <option value="2023">2023</option>
            <option value="2024">2024</option>
            <option value="2025">2025</option>
            <option value="2026">2026</option>
            <option value="2027">2027</option>
        </select>
        <input type="text" name="field_creditCardPostalCode" id="creditCardPostalCode" class="field_input" maxlength="10" size="40" placeholder="ZIP Code" autocomplete="off">
    </div>
    <br>
    <div class="termsConditions">
        <input type="checkbox" id="agreeTerms" value="1">
        <label for="agreeTerms">I have read and agree to the SugarSync
            <br><a href="/terms" target="_blank">Terms of Service</a>
        </label>
        <br>
    </div>

    <input id="submit" class="formBtn disabled" type="submit" value="Complete Signup">
</form>

【问题讨论】:

    标签: html forms selenium webdriver wait


    【解决方案1】:

    您可以对某些特定内容使用显式等待。等待所有元素并不理想。没有特定的方法来检查所有 Ajax 元素是否已加载。如果由于 Ajax 加载而无法使用显式等待访问某些特定元素,请回答。

    【讨论】:

    • 你能给出一个代码示例吗?我不知道如何使用它
    • WebElement 元素= null;布尔未找到=真; int numberOfTries = 0; while ( notFound && 尝试
    【解决方案2】:

    使用此代码

    WebElement element= null;
      boolean notFound= true;
      int numberOfTries= 0;
      while ( notFound && numberOfTries < 60 ) 
     {
        numberOfTries += 1;
         try 
         {
          element =  driver.findElement( locator );
          if(element.isDisplayed && element.isClickable)//Desired condition
           {         
          notFound = false; //Element identified
           }
        } 
      catch ( Exception e ) 
        {                       
          system.out.println("Exception occured")
          notFound = true;
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-31
      • 2011-09-06
      • 2015-06-11
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 2014-01-03
      • 1970-01-01
      相关资源
      最近更新 更多