tony老师:请问一下同样的元素定位值,用封装的方法定位不到,用框架By的方式可以定位到?

来源:3-6 页面对象开发的第二种实现方式

慕工程8594684

2022-02-16

#引用封装的element方法
self.element(self.phone).send_keys(phone)
sleep(1)
self.driver.find_element(By.CLASS_NAME,‘next-active’).click()
# self.element(self.nextBtn).click()
如:
self.element(self.phone).send_keys(phone)----可以定位成功;
self.driver.find_element(By.CLASS_NAME,‘next-active’).click()----可以定位成功
self.element(self.nextBtn).click()-----定位失败

重定义方法封装:
#实现页面单个元素定位
def element(self,loc:tuple):
""“
定位元素的方法
”""
return self.driver.find_element(*loc)

报错如下:

in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidArgumentException: Message: invalid
argument: invalid locator
(Session info: chrome=98.0.4758.102)

图片描述

![图片描述

图片描述

写回答

1回答

托尼老师

2022-02-17

从控制台堆栈来看,是元素的定位方式错了。

检查一下那几个报错方法里定义的实例属性,例如self.nextBtn。

如果还不行,把他们的定义截图一下。

0
3
慕工程8594684
回复
托尼老师
感谢tony老师的,用心答疑,改了调用名称后,该问题已经调试通过; 针对元素定位细节处,还得找资料深入学习。
2022-02-21
共3条回复

Python自动化测试开发实战,能帮你就业的测试课

开发高扩展、高可用的自动化测试框架,利用好测试自动化技术。

445 学习 · 157 问题

查看课程