自动化测试问题集合(一)

一、Web自动化测试
1、找不到元素,脚本报“NoSuchElementException:Unable to find element”,或者"定位到了,不能操作,点击无效"

① 首先查看自己的属性值是否写正确
②元素的标签不唯一,默认找到第一个
③向上查看,元素是否在frame或iframe框架中
④查看元素是否在新打开的页面中,需要切换到新窗口
⑤换其它的定位方式:id/name/class name/tag name/link text/xpath/css selector
⑥检查元素属性是否是会变动的、是否是隐藏的
⑦添加等待时间sleep(),implicitly_wait(),WebDriverWait(driver, 10, 1).until(定位的元素, messages)
⑧ 查看标签的属性是否有style=“display:none”。元素不显示。属性改为block
⑨查看标签的属性是否有οnclick=return false。取消点击。属性改为false)
⑩ 针对于⑧和⑨这两种情况:执行js修改属性

2、什么是JavaScript Executor,你什么时候会用到这个?

JavaScript Executor是一个接口,给driver对象提供一个执行javaScript并访问和修改前端元素属性和值。
还是有比较多的场景,我们可能或者需要借助javaScript来实现:
①元素通过现有定位表达式不能够实现点击
②处理时间日期插件(可能)
③生成一个alert弹窗
④拖拽滚动条

3、常用8种元素定位
定位方式备注说明
find_element_by_id()通过它的id属性定位到这个元素
find_element_by_name()通过它的name属性单位到这个元素
find_element_by_class_name()通过它的class属性定位到这个元素
find_element_by_tag_name()通过元素tag(标签)属性定位到这个元素
find_element_by_link_text()超链接元素可通过link_text定位,链接文本全称
find_element_by_partial_link_text()超链接元素可通过link_text定位,链接文本模糊匹配
find_element_by_xpath()一个元素它既没有id、name、class属性也不是超链接,通过xpath进行定位
find_element_by_css_selector()css是另外一种语法,比xpath更为简洁

元素定位的复数形式:

id复数定位find_elements_by_id(self, id_)
name复数定位find_elements_by_name(self, name)
class复数定位find_elements_by_class_name(self, name)
tag复数定位find_elements_by_tag_name(self, name)
link复数定位find_elements_by_link_text(self, text)
partial_link复数定位find_elements_by_partial_link_text(self, link_text)
xpath复数定位find_elements_by_xpath(self, xpath)
css复数定位find_elements_by_css_selector(self, css_selector

参数化方法,多用于框架中进行封装

find_element(self, by='id', value=None)
find_elements(self, by='id', value=None)
4、 多窗口、句柄(handle)如何进行切换?

获取当前页面的句柄:driver.current_window_handle
获取当前所有的句柄:window_handles
获取当前窗: nowhandle = self.driver.current_window_handle

方法一:判断句柄,不等于首页就切换

allhandle = self.driver.window_handles  # 获取所有窗口
for newhandle in allhandle:
    if newhandle != nowhandle:
        self.driver.switch_to_window(newhandle)

方法二:

win_hans = driver.window_handles 
print("当前打开的窗口句柄:", win_hans)
print("当前正在使用的窗口句柄", driver.current_window_handle)

切换 切换到最新打开的窗口

driver.switch_to.window(win_hans[-1])
5、元素在ifame上如何进行定位?

①切换 switch_to_frame
②当iframe上的操作完后,想重新回到主页面上操作元素,这时候,就可以用switch_to_default_content() 方法返回到主页面

6、下拉框元素如何进行定位?

①通过select选项的索引来定位选择对应选项(从0开始计数),如选择第三个选项:select_by_index(2)
② 通过选项的value值来定位。每个选项,都有对应的value值,如 第二个选项对应的value值就是"20":select_by_value(“20”)
③ 可以直接通过选项的文本内容来定位。 定位“每页显示50条”:select_by_visible_text(“每页显示50条”)
④用户自定义下拉框,如果不能通过以上三种方式进行定义,需要根据实际操作模拟进行动作拆分,如点击等待,在对下拉元素进行点击等操作完成

select还有其他方法如:
deselect_all() :取消所有选项
deselect_by_index() :取消对应index选项
deselect_by_value() :取消对应value选项
deselect_by_visible_text() :取消对应文本选项
first_selected_option() :返回第一个选项
all_selected_options() :返回所有的选项

7、弹框常见类型有哪些?如何进行操作?

alert操作[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0RDoowWj-1632361584958)(%E6%B5%8B%E8%AF%95%E9%97%AE%E9%A2%98%E9%9B%86.assets/image-20210915154755709.png)]
①先用switch_to_alert()方法切换到alert弹出框上
②可以用text方法获取弹出的文本 信息
③accept()点击确认按钮
④dismiss()相当于点右上角x,取消弹出框

confirm操作
在这里插入图片描述
①先用switch_to_alert()方法切换到alert弹出框上
②可以用text方法获取弹出的文本 信息
③accept()点击确认按钮
④dismiss()相当于点取消按钮或点右上角x,取消弹出框

prompt操作
在这里插入图片描述
① 先用switch_to_alert()方法切换到alert弹出框上
②可以用text方法获取弹出的文本 信息
③accept()点击确认按钮
④dismiss()相当于点右上角x,取消弹出框
⑤send_keys()这里多个输入框,可以用send_keys()方法输入文本内容

8、基于python的selenium两种文件上传操作

https://www.cnblogs.com/xiaogongjin/p/11546518.html

9、selenium启动ie浏览器常见错误及解决方案:

问题一: ie浏览器的安全模式设置问题

E   selenium.common.exceptions.SessionNotCreatedException: Message: Unexpected error launching Internet Explorer. Protected Mode settings are not the same for all zones. Enable Protected Mode must be set to the same value (enabled or disabled) for all zones.

问题二:页面缩放问题

E       selenium.common.exceptions.SessionNotCreatedException: Message: Unexpected error launching Internet Explorer. Browser zoom level was set to 50%. It should be set to 100%

解决方案一(手工配置):

①全部 勾选或者取消ie浏览器所有区域安全模式的“启动保护模式”
在这里插入图片描述
② 将页面缩放设置为100%
在这里插入图片描述
解决方案二(代码控制):

#通过修改注册表配置ie浏览器安全保护模式(必须全部开启或者全部关闭),缩放比例(100%)。
key=win32api.RegCreateKey(win32con.HKEY_CURRENT_USER,'Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\Ranges\\Range10')
win32api.RegSetValueEx(key, ':Range', 0, win32con.REG_SZ, '127.0.0.1')
win32api.RegSetValueEx(key, 'http', 0, win32con.REG_DWORD, 2)
win32api.RegCloseKey(key)

# IE安全保护模式全部开启
key1 = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\1',0, win32con.KEY_WRITE)
# 最后一个参数中(3:关闭,0:开启)
win32api.RegSetValueEx(key1, '2500', 0, win32con.REG_DWORD, 3)  
win32api.RegCloseKey(key1)

key2 = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\2',0, win32con.KEY_WRITE)
win32api.RegSetValueEx(key2, '2500', 0, win32con.REG_DWORD, 3)
win32api.RegCloseKey(key2)


key3=win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\3',0, win32con.KEY_WRITE)
win32api.RegSetValueEx(key3, '2500', 0, win32con.REG_DWORD,3)
win32api.RegCloseKey(key3)key4 = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\4',0, win32con.KEY_WRITE)
win32api.RegSetValueEx(key4, '2500', 0, win32con.REG_DWORD, 3)win32api.RegCloseKey(key4)

# IE缩放模式100%
key5 = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Software\\Microsoft\\Internet Explorer\\Zoom',0, win32con.KEY_WRITE)
win32api.RegSetValueEx(key5, 'ZoomFactor', 0, win32con.REG_DWORD, 100000)
win32api.RegCloseKey(key5)
10、pytest装饰器总结

https://blog.csdn.net/m0_37890492/article/details/116201942

11、pip安装第三方镜像很慢,问题如何解决?

①找到用户目录C:\Users\用户\pip,如果不存在就新建该文件夹.
② 新建文件pip.ini,并用文本编辑器输入以下内容并保存

[global] index-url = http://mirrors.aliyun.com/pypi/simple/
[install] trusted-host=mirrors.aliyun.com

③打开cmd输入pip install 库名, 可以看到源已切换为阿里云

C:\Users\liang>pip3 install requests
Looking in indexes: http://mirrors.aliyun.com/pypi/simple/
Collecting requests
  Downloading http://mirrors.aliyun.com/pypi/packages/92/96/144f70b972a9c0eabbd4391ef93ccd49d0f2747f4f6a2a2738e99e5adc65/requests-2.26.0-py2.py3-none-any.whl (62 kB)
     |████████████████████████████████| 62 kB 2.3 MB/s
Requirement already satisfied: idna<4,>=2.5 in e:\software\python37\lib\site-packages (from requests) (2.10)
Requirement already satisfied: certifi>=2017.4.17 in e:\software\python37\lib\site-packages (from requests) (2020.6.20)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in e:\software\python37\lib\site-packages (from requests) (1.25.9)
Collecting charset-normalizer~=2.0.0
  Downloading http://mirrors.aliyun.com/pypi/packages/3f/65/69e6754102dcd018a0f29e4db673372eb323ee504431125ab6c9109cb21c/charset_normalizer-2.0.6-py3-none-any.whl (37 kB)
Installing collected packages: charset-normalizer, requests
Successfully installed charset-normalizer-2.0.6 requests-2.26.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值