最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Using selenium in Python to move slider for verification - Stack Overflow

programmeradmin0浏览0评论

enter image description here

Using Python to move the slider that is popped up when visiting the site: .

When the slider is "active" it needs to be moved to the end and the underlying element code is this:

<div id="waf_nc_block" style="display: block;">
    <div class="waf-nc-mask"></div>
    <div id="WAF_NC_WRAPPER" class="waf-nc-wrapper">
        <p class="waf-nc-title">访问验证</p>
        <p class="waf-nc-description">为保证您的正常访问,请进行如下验证</p>
        <p id="waf-nc-traceid" class="waf-nc-traceid-class">日志ID: ac11000117319689145554401e1a0c</p>
        <div id="nocaptcha">
            <div id="aliyunCaptcha-window-embed" class="aliyunCaptcha-show"
                 style="padding:0;border:none;display:block;">
                <div id="aliyunCaptcha-sliding-wrapper" class="aliyun-captcha">
                    <div id="aliyunCaptcha-sliding-body" class="sliding">
                        <div id="aliyunCaptcha-sliding-left" class="" style="width: 295px;"></div>
                        <div id="aliyunCaptcha-sliding-slider" class="" style="cursor: grabbing; left: 275px;"></div>
                        <div id="aliyunCaptcha-sliding-text-box" class="aliyunCaptcha-sliding-text-box"><span
                                id="aliyunCaptcha-sliding-text"
                                class="aliyunCaptcha-sliding-text">请按住滑块,拖动到最右边</span></div>
                    </div>
                    <span id="aliyunCaptcha-sliding-failTip"></span> <span id="aliyunCaptcha-errorTip"></span></div>
            </div>
        </div>
    </div>
</div>

I did try the below snippets and many variants of ActionChains but all of them result in validation error - whose html snippet looks like below

<div id="waf_nc_block" style="display: block;">
    <div class="waf-nc-mask"></div>
    <div id="WAF_NC_WRAPPER" class="waf-nc-wrapper">
        <p class="waf-nc-title">访问验证</p>
        <p class="waf-nc-description">为保证您的正常访问,请进行如下验证</p>
        <p id="waf-nc-traceid" class="waf-nc-traceid-class">日志ID: ac11000117320265050193350e6922</p>
        <div id="nocaptcha">
            <div id="aliyunCaptcha-window-embed" class="aliyunCaptcha-show"
                 style="padding:0;border:none;display:block;">
                <div id="aliyunCaptcha-sliding-wrapper" class="aliyun-captcha" style="background: white;">
                    <div id="aliyunCaptcha-sliding-body" class="sliding" style="display: none;">
                        <div id="aliyunCaptcha-sliding-left" class="" style="width: 300px;"></div>
                        <div id="aliyunCaptcha-sliding-slider" class="ok" style="cursor: grabbing; left: 280px;"></div>
                        <div id="aliyunCaptcha-sliding-text-box" class="aliyunCaptcha-sliding-text-box"><span
                                id="aliyunCaptcha-sliding-text" class="verified">验证中...</span></div>
                    </div>
                    <span id="aliyunCaptcha-sliding-failTip">  <span id="aliyunCaptcha-sliding-fail-text"
                                                                     class="aliyunCaptcha-sliding-fail-text aliyun-captcha">    <span
                            id="aliyunCaptcha-sliding-warning" class="aliyunCaptcha-sliding-warning"></span> 
    页面停留过长,请刷新页面重试    <br>(error:ac11000117320265050193350e6922) <br>  </span>  </span> <span
                        id="aliyunCaptcha-errorTip"></span></div>
            </div>
        </div>
    </div>
</div>

The variants that I tried using selenium's functions are: drag & drop

 slider = driver.find_elements(by=By.XPATH, value="//div[@id = 'nocaptcha']//div[@id = 'aliyunCaptcha-sliding-slider']")[0]
ActionChains(driver).drag_and_drop_by_offset(slider, 280, 0).pause(3).perform()

and

 ActionChains(driver).move_to_element(slider).click_and_hold().move_by_offset(120, 0).pause(.4).move_by_offset(100, 0).pause(.3).move_by_offset(60, 0).pause(.1).release().perform()

here I am pausing every few units to mimic the human engagement as I needed to cover 280 units to move the slider to the right. But all of them result in validation error prompting me to retry, so I am stuck in this endless retry loop.

Appreciate any help or clues to crack this. Thank you.

发布评论

评论列表(0)

  1. 暂无评论