python - 尝试使用 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()```
解决方案
好的,我想我忘了这是一个 iframe,所以添加了:
self.driver.switch_to.frame(self.driver.find_element_by_xpath('/html/body/browse-root/rci-main/div/iframe'))
推荐阅读
- xml - 用于设计主题的 Google Blogger XML 布局错误
- gremlin - TinkerPop 架构:需要澄清
- python - 使用 python-vlc 从 youtube 视频中获取屏幕截图
- compiler-construction - 测试空白文件时的语法错误 - LEX/YACC
- c - C程序接受三个整数并查看它们是否构成三角形和直角
- asp.net-mvc - 哪种语言/框架与 Salesforce 开发最相似?
- charts - Highcharts 垂直同步图表
- json - 使用 Moshi 解析 JSON 格式的包装对象
- r - R:根据匹配的行和列名称从相关矩阵中删除项目
- python - Celery 连接到 amqp://guest**@localhost 而不是 Redis。Heroku 部署