首页 > 解决方案 > Selenium chrome 驱动程序 .click() 在特定网站 Python 上不起作用

问题描述

我正在尝试登录一个特定的网站,我填写了电子邮件和密码,然后我点击了“登录”,但实际上它并没有登录,而是将我重定向到主页,我研究了情况并注意到一些网站有一个“回调”功能,你可以找到 trought 控制台,事实上,当我必须注册时(没有登录,但注册)它要求我输入验证码,并且 trought 控制台我发现验证码有一个回调函数 -如果调用 - 它模拟“立即注册”按钮(我很容易发现此函数通过脚本找到链接到验证码的回调)。关键是:如果登录没有验证码,我怎样才能找到这个回调函数?我不知道如何开始,有什么建议或学习指南吗?顺便说一句,这就是我的简单脚本

    driver.get("https://www.streetmachine.com/login")
    time.sleep(1)
    el=driver.find_element_by_name("email")
    el.send_keys(lf[0])
    el=driver.find_element_by_name("password")
    el.send_keys(lf[1])
    
    time.sleep(3)
    el=driver.find_element_by_id("login-form-submit")
    driver.execute_script("arguments[0].click();", el)

如您所见,该网站是 get() 中调用的网站,谢谢!

标签: pythonselenium-webdrivercallback

解决方案


您可以尝试使用“ActionChains”;首先找到元素,然后执行单击。

例如如下代码:

    def click_login_button(self, **kargs):
        try:
           button = WebDriverWait(self.driver, 3).until(
            lambda x: x.find_element_by_id("login-form-submit")
           )
        except TimeoutException:
           pass
        if not button.is_enabled():
           pass
        webdriver.ActionChains(self.driver).move_to_element(button).click().perform()

参考:

详细的鼠标操作,https://www.selenium.dev/documentation/en/support_packages/mouse_and_keyboard_actions_in_detail/


推荐阅读