51Testing软件测试论坛

标题: 请问这个登录框用 python+selenium 怎么使用键盘操作事件来切换输入框并输入呢? [打印本页]

作者: lwq6783293    时间: 2017-3-15 14:25
标题: 请问这个登录框用 python+selenium 怎么使用键盘操作事件来切换输入框并输入呢?

[attach]105121[/attach]
如上图:
假如:
机构代码输入框的id是:jg
用户名输入框的id是:user
密码输入框的id是:pw


请问:代码该怎么实现呢?
[attach]105118[/attach]

这是我的代码,问题肯定有,要不然也不会跑不通了!
我的疑问是,如果我通过定位机构码输入框的ID,进行模拟TAB操作而定位到用户名输入框,这一步我能实现,但是当光标到用户名输入框后,不知道怎么才能输入内容了,我就是卡在这一步了。麻烦知道的人告诉一下我,谢谢各位了!


[attach]105120[/attach]


还有一个问题是,我发现我每次启动chrome时,会提示“chrome正受到自动化测试软件的控制”
我之前用java+selenium弄的时候都没有这个提示,而且python+selenium是我前几天搭建起来的,刚开始跑的时候也没有这个提示,这个提示虽然不会影响测试,但是还是想知道为什么会有这一句话
[attach]105119[/attach]

作者: 若尘_51    时间: 2017-3-15 14:46
我来回答下第一个问题
输入框有id的标识,如果这个id是唯一的话,建议还是driver.find_element_by_id(xxx)的方式。
用户名、密码也可以用id或xpath的方式定位。

你这种方式我还真没有见过,你可以试试:

在执行完模拟TAB操作后,加上:
driver.click()
time.sleep(1)
再发送输入的内容。



作者: 黑盒测试    时间: 2017-3-15 14:50
用户名不定位你就去直接输入了,错了
driver.find_element_by_id("user").send_keys('xiaoming')
driver.find_element_by_id("user").send_keys(keysTAB)
driver.find_element_by_id("pw").send_keys(123456)


作者: 黑盒测试    时间: 2017-3-15 14:51
浏览器的问题是检测到你用了第三方操作弹出逇不安全提示,需要添加白名单把 试试
作者: 梦想家    时间: 2017-3-15 15:42
定位是不是不准确
作者: lwq6783293    时间: 2017-3-15 17:15
黑盒测试 发表于 2017-3-15 14:51
浏览器的问题是检测到你用了第三方操作弹出逇不安全提示,需要添加白名单把 试试

请问怎么添加白名单呢?
作者: lwq6783293    时间: 2017-3-15 17:16
若尘_51 发表于 2017-3-15 14:46
我来回答下第一个问题
输入框有id的标识,如果这个id是唯一的话,建议还是driver.find_element_by_id(xxx) ...

感谢您的回复,我这个例子是假设的,所以xpath还是ID都无所谓,当然,在实际实现过程中,我肯定是会更简单的方式。
作者: lwq6783293    时间: 2017-3-15 17:19
黑盒测试 发表于 2017-3-15 14:50
用户名不定位你就去直接输入了,错了
driver.find_element_by_id("user").send_keys('xiaoming')
driver. ...

按照您这个代码的话,那我模拟键盘操作既不是没有意义了?我一般模拟键盘操作时因为元素难定位,但看您的代码的话,即使用了TAB,还是得知道密码输入框的元素,通过再次find_element_by_id("pw")才能输入内容,是这样吗?如果是这样的话,那我直接:driver.find_element_by_id("user").send_keys(admin)
driver.find_element_by_id("pw").send_keys(123456)这两种效果岂不是一样的?
作者: lwq6783293    时间: 2017-3-15 17:19
梦想家 发表于 2017-3-15 15:42
定位是不是不准确

这只是个例子
作者: lwq6783293    时间: 2017-3-15 17:23
按照@黑盒测试  的说法:
driver.find_element_by_id("user").send_keys('xiaoming')
driver.find_element_by_id("user").send_keys(keysTAB)
driver.find_element_by_id("pw").send_keys(123456)

我感觉模拟键盘没有起到任何作用,实现了模拟TAB键后,还是得定位下一个输入框的元素,我一般都是定位不到元素的时候才通过上一个输入框或者其他的元素来进行模拟键盘操作,用TAB将光标移动到下一步的,按照我自己的理解,上面的代码,完全可以用下面的代码代替吧?
driver.find_element_by_id("user").send_keys('xiaoming')
driver.find_element_by_id("user").send_keys(123456)
作者: 黑盒测试    时间: 2017-3-15 18:02
lwq6783293 发表于 2017-3-15 17:23
按照@黑盒测试  的说法:
driver.find_element_by_id("user").send_keys('xiaoming')
driver.find_elemen ...

恩是的  我也没找到方法
作者: 黑盒测试    时间: 2017-3-15 18:03
lwq6783293 发表于 2017-3-15 17:19
按照您这个代码的话,那我模拟键盘操作既不是没有意义了?我一般模拟键盘操作时因为元素难定位,但看您的 ...

嗯 也没有找到方法
作者: lwq6783293    时间: 2017-3-16 09:35
黑盒测试 发表于 2017-3-15 18:03
嗯 也没有找到方法

好的,那我自己再研究一下,非常感谢您的回复
作者: jingzizx    时间: 2017-4-11 16:43
学习
作者: cq520131517    时间: 2017-4-18 11:12
楼主,看看这篇博客,我不知道这是不是你想要的  http://www.bianceng.cn/Programming/extra/201409/44906.htm




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2