MiwuK1 2022-05-10 20:31 采纳率: 50%
浏览 59

selenium+unittest 成功登录之后 获取到的url还是登录页面的url

如题,这是我写的登录脚本

    @file_data('zentao_login.yaml')
    def test_login(self, user, pwd, status):
        account = user
        password = pwd
        # 元素定位:分别是用户名输入框、密码输入框、登录按钮
        user_loc = self.driver.find_element(By.XPATH, '//*[@id="account"]')
        pwd_loc = self.driver.find_element(By.XPATH, '//*[@id="login-form"]/form/table/tbody/tr[2]/td/input')
        btn_loc = self.driver.find_element(By.XPATH, '//*[@id="submit"]')

        # 判断状态: 0为正确用户名密码 1为不正确用户名密码
        if status == '0':
            # 给元素传值
            user_loc.send_keys(account)
            pwd_loc.send_keys(password)
            # 点击登录
            btn_loc.click()
            print(self.driver.title, self.driver.current_url)
            self.assertEqual('my', self.driver.current_url)
            self.assertIn('我的地盘', self.driver.title)
        elif status == '1':
            # 给元素传值
            user_loc.send_keys(account)
            pwd_loc.send_keys(password)
            # 点击登录
            btn_loc.click()
            print(self.driver.title, self.driver.current_url)
            # print(self.driver.switch_to.alert.text)
            self.driver.switch_to.alert.accept()
            sleep(3)
        else:
            print('参数化的状态只能传入01')

这是执行后的结果:

img

img

两个问题:
一、为什么成功登录之后(执行过程中已经看到登录之后的页面了而且能看到页面的url也是登录之后的url),获取到的URL还是登录页面的URL
二、上图2的Error为啥会报错?下图是错误用户名密码登录后弹出的警告框

img

  • 写回答

2条回答 默认 最新

  • ritalee11 2022-05-11 14:42
    关注

    current_window = self.driver.current_window_handle # 定位下当前窗口

    self.driver.switch_to.window(window) # 切换下试试

    评论

报告相同问题?

问题事件

  • 创建了问题 5月10日

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)