CHROME设置PAGE_LOAD_TIME参数生效问题

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

禾希禾希

2021-05-19

CHROME里面设置了隐式超时、页面加载等参数,但是在login的时候还需要sleep,否则可能会导致登录后的元素无法获取,断言失败,是CHROME里面设置的等待时间参数未生效么?
@property
def test_login(self):
self.get()
self.login()
sleep(2)
assert ‘%s’ % self.element(self.loginerBy).text == 'PA 亮平(WULIANGPING233)'
print(‘test login is ok’)

写回答

2回答

禾希禾希

提问者

2021-05-21

回复里没办法上传图片,所以之前贴代码了,抱歉;

1、CHROME里设置了页面加载参数,而且我也设置了显式等待,不过实际效果都没生效,还是要强制sleep才能获取到登录后的页面元素;

 assert self.element(self.loginerBy).text == 'PA 亮平(WULIANGPING233)'
AssertionError

2、在po_demo里,我想使用with来测试,这样在出现异常的时候能关闭浏览器,但实际_test实例无法使用test_login方法;

object = TestAdd()
object.test_login
object.test_add

# with TestAdd() as _test:
#   _test.test_login

3、我在logout方法内,想捕捉confirm窗口点击确定,但实际也不生效(sleep也不行),最后通过xpath定位,然后点击才可以;

初学,基础比较薄弱,请老师帮忙解答下,谢谢//img.mukewang.com/szimg/60a782040986d13810090590.jpg

//img.mukewang.com/szimg/60a77eca09d37a1009831155.jpg

//img.mukewang.com/szimg/60a779a209a9939607480964.jpg


0
1
托尼老师
关于第一个问题: 隐式等待和显示等待不能同时使用,selenium官网有明确说明。既然在浏览器初始化时设置了隐式等待时间,就能满足元素等待要求。至于断言失败,可能与断言的元素self.loginerBy有关,请再检查一下元素定位或者将完整的报错截图出来; 关于第二个问题: TestAdd以及它的超类们都没有定义上下文管理器的实例方法__enter__和__exit__,所以TestAdd的实例不支持with语句,这是使用with语句需要注意的地方,不是每个对象都能直接使用with的; 关于第三个问题: 你的确认登出的元素弹框应该是属于页面元素而不是页面的alter弹框,后者才能使用switch_to方法。
2021-05-22
共1条回复

托尼老师

2021-05-19

请把源码和报错的截一下,同学。

0
2
托尼老师
回复
禾希禾希
assert self.element(self.loginerBy).text == 'PA 亮平(WULIANGPING233)' 这句里的self.loginerBy是在哪里定义的?
2021-05-20
共2条回复

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

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

445 学习 · 157 问题

查看课程