我正在尝试使用 Python 中的 Selenium 从沃尔玛网站抓取一些评论数据,但它连接了该网站以进行人工验证。检查此“按住”按钮后,不知何故,当我找到该元素时,它以 [ object HTMLIFrameElement ]的形式出现,而不是作为 Web 元素。该元素随机出现在 10 个 iframe 中的任意 iframe 内。可以使用循环进行检查,但是,最终我们无法在没有 Web 元素的情况下在 Selenium 中执行任何操作。
虽然此验证也以弹出窗口的形式出现,但我试图首先解决此页面的问题。div不知怎的,我使用作为网络元素找到了这个按钮的位置。
actions = ActionChains(driver)
iframe = driver.find_element_by_xpath("//div[@id='px-captcha']")
frame_x = iframe.location['x']
frame_y = iframe.location['y']
actions.move_to_element(iframe).move_by_offset(frame_x-550, frame_y+70).build().perform()
Run Code Online (Sandbox Code Playgroud)
如果我执行单击context.click()或右键单击,可以看到鼠标位置位于按钮的中间。

现在,如果我可以长按或者按住鼠标左键一段时间,我想这个验证就可以清除了。为此,我尝试使用click()和click_and_hold以及 中的key_down方法(因为按 ctrl 和 Enter 与长按相同)采取行动action,但没有响应,因为这些方法释放按钮,无法长按。我试过
actions.move_to_element(iframe).move_by_offset(frame_x-550,frame_y+70).click_and_hold().pause(20).perform()
actions.move_to_element(iframe).move_by_offset(frame_x-550, frame_y+70).actions.key_down(Keys.CONTROL).actions.key_down(Keys.ENTER).pause(20).perform()
Run Code Online (Sandbox Code Playgroud)
......还有很多方法!如何使用 Selenium 解决这个问题?