首页 > 解决方案 > 尝试使用 Selenium 登录但无法正常工作

问题描述

我正在玩一些有趣的代码。我正在尝试登录我的移动运营商网站来测试我的硒技能。只要它点击登录按钮,它就会打开登录窗口。但是,我被困在这里。我相信这是一个 AJAX 登录表单,所以我使用了等待功能,但仍然不起作用。即使我可以传递“你好”之类的东西,那也很棒。

from selenium.webdriver.common.keys import Keys
import time
from secrets import username, password
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

class Rogers:
    def __init__(self, username, password):
        self.username=username
        self.password=password
        self.driver = webdriver.Firefox(executable_path='/Users/ss/Downloads/geckodriver')

    def login(self):
        self.driver.get("http://www.rogers.com")
        time.sleep(5)
        self.driver.find_element_by_xpath('/html/body/browse-root/rci-main/rci-header/section/dsa-header/header[1]/div[1]/div[2]/div[2]/ul/li[4]/a/span[2]').click()
        user=WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.XPATH,'/html/body/app-root/div/div/app-login/div[1]/form/div[1]/input'))).send_keys('hello')
        pw=WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.XPATH,'//*[@id="password"]'))).send_keys(password)
        self.driver.find_element_by_xpath('/html/body/app-root/div/div/app-login/div[1]/form/div[5]/button').click()

def main():
    R=Rogers(username,password)
    R.login()

if __name__ == "__main__":
    main()```

标签: pythonajaxseleniumrecaptchawebdriverwait

解决方案


好的,我想我忘了这是一个 iframe,所以添加了:


self.driver.switch_to.frame(self.driver.find_element_by_xpath('/html/body/browse-root/rci-main/div/iframe'))

推荐阅读