python面试题1(1-27)

1、自动化代码中,用到了哪些设计模式?

单例设计模式
工厂模式
PO设计模式
数据驱动模式
面向接口编程设计模式

2、什么是断言( Assert) ?

断言Assert用于在代码中验证实际结果是不是符合预期结果,
如果测试用例执行失败会抛出异常并提供断言日志

3、什么是web自动化测试

Web自动化测试是从UI (用户界面)层面进行的自动化测试,
测试人员通过编程自动化程序(测试用例脚本)来打开浏览器测试网站的业务逻辑。

4、什么是Selenium?

Selenium是一个开源的web自动化测试框架,支持多种编程语言开发自动化测试脚本,支持跨浏览器平台进行测试

5、写出Selenium中你最熟悉的接口或类

WebDriver、InternetExplorerDriver、 FirefoxDriver、 ChromeDriver、 WebElement、WebDriverWait、 By

6、元素定位类型有哪些?

By类一共有8种元素定位方式,它们都是静态方法:
By.id():
By.name():
By.tagName():
By.className():
By.cssSelector():
By linkText():
By partialLinkText():
By.xpath():

7、Xpath是什么?

它是查找web页面元素的一种方式,相当于元素在dom中间的一个路径,可以采用绝对路径和相对路径的方式进行定位
它对于定义动态的页面元素有很大的帮助,同时也需要谨慎使用,因为如果页面结构发生变化,那么定位信息也可能需要变化。

8、findElement()和findElements(方法有什么区别

两个都是查找页面元素的方法
findElement():查找一个页面元素,只会返回一个WebElement对象
findElements() :查找页面上所有符合匹配的元素,返回元素集合

9、登录按钮除了用click方法进行点击以外还有其他方式吗?

还可以使用submit()方法,前提是input元素的type为submit

10、怎么提高Selenium脚本的执行速度

  • 优化等待时间:使用 WebDriverWait 智能等待来代替线程等待 sleep 和 隐式等待 implicityWait
  • 减少不必要的操作:如直接进入某页面代替经过一系列自动化操作进入某页面在服务器允许的情况下,使用多线程实现并发执行测试用例.

11、怎么对含有验证码的功能进行自动化测试的

1-图像识别,技术难度大,效果不佳,不推荐
2-屏蔽验证码,邀请开发处理,但在预生产环境或者生产环境不推荐
3-万能验证码,使用一个复杂的其他人无法猜到的验证码

12、怎么验证复选按钮是不是被选中

可以使用元素的 isSelected() 方法,如果返回的是 true 则说明被选中,否则表明未被选中

13、如何处理alert弹窗?

处理 alert 弹窗首先需要先跳转到 alert 上,然后在点击确定或者取消按钮,
Alert alert = driver.switchTo().alert(); //切换到alert
alert.accept0; //确定
alert.dismiss0; //取消

14、下拉菜单中如何去选择一个菜单项?

1-如果下拉菜单是select标签,使用方法: selectByValue() 或者 selectByIndex() 或者 selectByVisibleText() 即可
2-如果这个下拉菜单不是通过 select 标签创建,则直接通过 xpath 定位元素然后去点击选择

15、如何模拟浏览器的前进和后退、刷新操作

driver.navigate().back()://后退
driver. navigate().forward()://前进
driver.navigate0.refresh()://刷新

16、怎么获得当前页面的URL?

String url = driver.getCurrentUrl();

17、WebDriver的close()和quit(方法的区别是什么?

close()方法只是关闭当前正在操作的窗口
quit()是关闭了所有已经打开的窗口

18、你觉得自动化测试用哪些缺陷

成本比较大,而成效可能并不高
适合自动化测试的功能有限
某些功能操作相对复杂,比如验证码
维护成本高,一旦项目需求变更,自动化测试脚本和用例就需要改进

19、Web端功能自动化,如何实现(非input型上传)上传文件

与windows窗口进行交互,可以使用 pywin32库 实现。

20、遇到<d1 class="inf-bar clearfix"> 这种class中间有空格的控件,如何通过class定位?

xpath定位:直接//d1 [@class=“inf_bar clearfx”]
css定位: d1.inf_bar.clearfix

21、Selenium自动化,遇到 iframe 如何处理?

使用switch_ to.frame 切换进 iframe 当中后 ,再去定位其中的元素并操作

22、Web端功能自动化中,如何切换句柄。

先获取所有窗口句柄,然后使用 switch_ to.window() 切换到指定窗口

23、测试中遇到 readonly 属性的控件,需要如何处理?简述一下思路

先修改关闭 readonly 属性,然后再操作元素。

24、需求:给定一个只包含正整数且非空的数组,返回该数组中重复次数最多的前N个数字(返回结果按重复次数从多到少降序), 请用熟悉的语言实现该需求。10分钟内写出来

a = [1, 6, 7, 4, 4, 5, 4, 5, 4, 5, 5, 6, 7, 8, 5, 6, 7, 3, 4, 2, 2, 1, 4, 8, 9, 4, 5, 6]

def get_datas(a):
    result = []
    data_dict = {}
    # 键值对:键:数字,值:在列表中的次数
    for item in set(a):
        data_dict[str(item)] = a.count(item)
    print(data_dict)
    # 将键值对按值(数字出现的次数)排序 ---从高到低排序
    res = sorted(data_dict.values(),reverse=True)
    print(res)
    for num in res:
        for key,value in data_dict.items():
            # 如果值在列表中不存在,则添加到结果列表中
            if num == value and key not in result:
                result.append(key)
    print(result)

    # return result

a1 = get_datas(a)

执行结果:
{'1': 2, '2': 2, '3': 1, '4': 7, '5': 6, '6': 4, '7': 3, '8': 2, '9': 1}
[7, 6, 4, 3, 2, 2, 2, 1, 1]
['4', '5', '6', '7', '1', '2', '8', '3', '9']

25、例如: passwd={"admin'":"123321","user1":" 123456"}满足一下条件?

1、设计一个登陆程序,不同的用户名和对应密码存在一一个字典里面,输入正确的用户和密码去登陆,
2、首先输入用户名,如果用户名不存在或者为空,则一直提示输入正确的用户名
3、 当用户名正确的时候,提示去输入密码,如果密码跟用户名不对应,则提示密码错误请重新输入。
4、如果密码输入错误超过三次,中断程序运行。
5、当输入密码错误时,提示还有几次机会
6、用户名和密码都输入成功的时候, 提示登陆成功!

users = {"admin": "123456", "user1": " 123456"}
count = 0

def login():
    global count
    username = input("请输入用户名:")
    if username == None or username == "":
        login()
    if username not in users.keys():
        print("用户名输入不正确,请重新输入用户名:")
        login()

    while (count < 3):
        passwd = input("请输入密码:")
        if passwd == users[username]:
            print("登录成功!!")
            count = 3
        else:
            count += 1
            print("密码输入错误,您还有{0}次机会。".format(3 - count))


login()

26、编写一个程序:(没懂)

1、能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件;
2、并打印出相对路径。

import os

paths = []

def get_paths(dir, relate_dir=None, search_str=None):
    global paths
    if search_str == None:
        return os.listdir(dir)

    for item in os.listdir(dir):
        if relate_dir == None:
            relate_dir == os.curdir

        if os.path.isfile(os.path.join(dir, item)):
            if item.find(search_str) != -1:
                paths.append(os.path.join(relate_dir, item))
        elif os.path.isdir(os.path.join(dir, item)):
            paths = get_paths(os.path.join(dir, item), os.path.join(relate_dir, item), search_str)

    return paths


dir = os.getcwd()
search_str = "fun"
print(get_paths(dir, search_str=search_str))
# os.path.join()函数:连接两个或更多的路径名组件
# os.path.isfile() 功能:如果文件是一个存在的文件,返回True。否则返回False【有参】
# os.path.isdir()模块函数【常用】 功能:如果目录是一个存在的目录,则返回True。否则返回False【有参】
# os.getcwd()获取当前工作目录,即当前python脚本工作的目录路径【无参】

27、请写出下列代码的运行结果

def f(str1, *args, **kwargs):
    print(str1, args, kwargs)
# *args表示任何多个无名参数,它本质是一个tuple; 
# **kwargs表示关键字参数,它本质上是一个dict; 
# 同时使用*args和**kwargs时,必须*args参数列要在**kwargs前。

l = [1, 2, 3]
t = [4, 5, 6]
d = {"a": 7, "b": 8, "c": 9}

f(1, 2)
f(1, 2, 3, "python")
f("python", l, d)
f("python", *t)
f("python", *l, **d)
f("python", q="winning", **d)

执行结果:

1 (2,) {}
1 (2, 3, 'python') {}
python ([1, 2, 3], {'a': 7, 'b': 8, 'c': 9}) {}
python (4, 5, 6) {}
python (1, 2, 3) {'a': 7, 'b': 8, 'c': 9}
python () {'q': 'winning', 'a': 7, 'b': 8, 'c': 9}

参考链接
https://blog.csdn.net/qdPython/article/details/108775488?utm_source=app

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,639评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,277评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,221评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,474评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,570评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,816评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,957评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,718评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,176评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,511评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,646评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,322评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,934评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,755评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,987评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,358评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,514评论 2 348

推荐阅读更多精彩内容