定位可见元素

给元素添加属性 xbox-display 的值为 true

实例化Selector类

元素结构

{
	'id': 'ifream-xpath',
	'name': 'ifream-xpath',
	'type': 'simple',
	'xpath': {
		'enable': 'true',
		'segments': ['//iframe[@id="aa-challenge-whole-page-iframe"]', '//input[@name="submit_button"]']
	}
}

示例代码

def handle_captcha(web_page:xbot.web.WebBrowser):
    """处理亚马逊数英验证码"""
    # 构造验证码 xpath selector
    captcha_data =  {'id': 'ifream-xpath', 'name': 'ifream-xpath', 'type': 'simple', 'xpath': {'enable': 'true', 'segments': ['//iframe[@id="aa-challenge-whole-page-iframe"]', '//img[@alt="captcha"]']}}
    captcha_selector = Selector(captcha_data)
    captcha_input_data =  {'id': 'ifream-xpath', 'name': 'ifream-xpath', 'type': 'simple', 'xpath': {'enable': 'true', 'segments': ['//iframe[@id="aa-challenge-whole-page-iframe"]', '//input[@id="aa_captcha_input"]']}}
    captcha_input_selector = Selector(captcha_input_data)
    submit_data =  {'id': 'ifream-xpath', 'name': 'ifream-xpath', 'type': 'simple', 'xpath': {'enable': 'true', 'segments': ['//iframe[@id="aa-challenge-whole-page-iframe"]', '//input[@name="submit_button"]']}}
    submit_selector = Selector(submit_data)

    xbot.logging.info("处理亚马逊数英验证码结束")
    for i in range(5):
        if xbot_visual.web.browser.element_display(browser=web_page, content_type="display", selector=captcha_selector):
            try:
                web_element = web_page.find(captcha_selector)
                result = xbot_visual.web_service.cloud_captch(
                    captcha_engine="jfbym",
                    captcha_type="10111",
                    image_source="web",
                    web_page=web_page,
                    web_element=web_element,
                    win_element=None,
                    image_url=None,
                    image_path=None,
                    timeout="20",
                )
                web_page.find_by_xpath(captcha_input_selector).input(result)
                web_page.find_by_xpath(submit_selector).click()
            except Exception as e:
                xbot.logging.error(f"验证码处理异常: {e}")
            sleep(3)  # 控制频率,避免封号
        else:
            break  # 如果验证码元素已消失,跳出
    xbot.logging.info("处理亚马逊数英验证码结束")