登录页面元素定位失败解决

问题描述

使用自动化脚本访问csdn首页,点击登录链接,会在新窗口打开登录页面,但是账号登录的链接定位失败。

image.png
image.png

报错日志如下:


image.png

问题分析

账号登录的链接在新打开的窗口里面,需要切换到新打开的窗口,代码如下:

# 切换到新打开的窗口
self.driver.switch_to.window(self.driver.window_handles[-1])

注意:切换到新窗口前先显式等待(比如等待2秒),否则就会报错(元素定位失败)

image.png

csdn_login.gif

完整代码

# -*- coding: utf-8 -*-


from selenium.webdriver import *
from time import *
import unittest
from parameterized import parameterized
import sys

reload(sys)
sys.setdefaultencoding('utf-8')


class LoginTest(unittest.TestCase):
    """
    测试类
    """
    driver = None

    @parameterized.expand([
        ("https://www.csdn.net/", "admin", "123456")
    ])
    def test_login(self, url, username, password):
        """
        测试
        :param url:
        :param username:
        :param password:
        :return:
        """
        # 最大化窗口
        self.driver.maximize_window()
        # 设置默认的等待时长
        self.driver.implicitly_wait(15)
        # 打开网页
        self.driver.get(url)
        # 点击
        self.driver.find_element_by_link_text("登录").click()
        #
        sleep(2)
        # 切换到新打开的窗口
        self.driver.switch_to.window(self.driver.window_handles[-1])
        #
        self.driver.find_element_by_link_text("账号登录").click()
        #
        self.driver.find_element_by_id("all").send_keys(username)
        #
        self.driver.find_element_by_id("password-number").send_keys(password)
        self.driver.find_element_by_class_name("btn-primary").click()
        sleep(3)

    @classmethod
    def setUpClass(cls):
        # 创建驱动工具
        cls.driver = Firefox()

    @classmethod
    def tearDownClass(cls):
        # 关闭浏览器
        cls.driver.quit()


if __name__ == "__main__":
    # verbosity表示测试日志的详细级别
    unittest.main(verbosity=2)

参考资料

[01] selenium之 定位以及切换frame(iframe)
https://blog.csdn.net/huilan_same/article/details/52200586
[02] selenium之 切换窗口、frame、alert
https://blog.csdn.net/Rao_Juan/article/details/85554482

微信扫一扫关注该公众号【测试开发者部落】

image.png

点击链接加入群聊【软件测试学习交流群】
https://jq.qq.com/?_wv=1027&k=5eVEhfN
软件测试学习交流QQ群号:511619105

你可能感兴趣的:(登录页面元素定位失败解决)