问题描述
使用自动化脚本访问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