分享一下早期Selenium学习笔记

一、初始化浏览器

browser = webdriver.Chrome()#还支持EDGE、火狐等

二、前进后退

# 1.3访问界面
# 访问百度首页
browser.get('https://www.baidu.com/')
time.sleep(2)
# # 打开哔哩哔哩
browser.get('https://www.bilibili.com/')
time.sleep(2)
# 后退到百度页面
browser.back()
time.sleep(2)
# 前进到bilibili页面
browser.forward()
time.sleep(2)

三、定位页面元素

#可以根据id、class、xpath等定位,这里以id为例

driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
el=driver.find_element('id','kw')
el.send_keys('666')
time.sleep(100)
driver.close()

四、模拟鼠标操作

driver=webdriver.Chrome()

driver.get('https://www.baidu.com')

el=driver.find_element(by=By.XPATH,value='//*[@id="s-top-left"]/a[1]')

actions=ActionChains(driver)#创建动作链

actions.click(el)#... 添加一系列事件

actions.perform()#执行

time.sleep(2)

driver.close()

# 单击   click(el)
# 右击   context_click(el)
# 双击   double_click(el)
# 拖拽   double_and_drop(el)
# 悬停   move_to_element(el)
# 执行   perform()

五、模拟键盘操作

el.send_keys(Keys.SPACE)

# 删除键 send_keys(Keys.BACK_SPACE)
# 空格键 send_keys(Keys.SPACE)
# 制表键 send_keys(Keys.TAB)
# 回退键 send_keys(Keys.ESCAPE)
# 回车 send_keys(Keys.ENTER)
# 全选 send_keys(Keys.CONTRL,‘a’)
# 复制 send_keys(Keys.CONTRL,‘c’)
# 剪切 send_keys(Keys.CONTRL,‘x’)
# 粘贴 send_keys(Keys.CONTRL,‘v’)
# 键盘F1 send_keys(Keys.F1)

六、等待

#强制等待time.sleep(2)

#隐式等待driver.implicitly_wait(5)

七、切换

窗口切换:windows=driver.window_handles #windows是打开窗口的顺序列表,0代表首窗口,-1代表最后一个窗口

driver.switch_to.window(windows[0])

表单切换:switch_to.frame()

八、操作cookie

browser.get_cookies()

browser.add_cookie({'name':'坤哥', 'value':'帅哥'})

browser.delete_all_cookies()

九、断言使用

1.assert断言:

assert '百度新闻' in dr.title    

assert 'https://news.baidu.com/' == dr.current_url   

assert 'not found' not in dr.page_source  

element = dr.find_element('id', 'header-wrapper')

assert element is not None

2.unittest断言

self.assertEqual(1, 1)

self.assertNotEqual(1, 2)

self.assertTrue(True)

self.assertFalse(False)

self.assertIn('a', ['a', 'b', 'c'])

self.assertNotIn('d', ['a', 'b', 'c'])

附unnitest断言示例:

import unittest
class TestExample(unittest.TestCase):    
	def test_equal(self):        # 断言 1 和 1 是否相等        
	    self.assertEqual(1, 1)    
	def test_not_equal(self):        # 断言 1 和 2 是否不相等        
		self.assertNotEqual(1, 2)    
	def test_true(self):        # 断言 True 是否为 True        
		self.assertTrue(True)    
	def test_false(self):        # 断言 False 是否为 False        
		self.assertFalse(False)    
	def test_in(self):        # 断言 'a' 是否在列表 ['a', 'b', 'c'] 中        
		self.assertIn('a', ['a', 'b', 'c'])    
	def test_not_in(self):        # 断言 'd' 是否不在列表 ['a', 'b', 'c'] 中     
		self.assertNotIn('d', ['a', 'b', 'c'])
if __name__ == '__main__':    
 	unittest.main()

#测试秋招##牛客创作赏金赛#
全部评论

相关推荐

点赞 评论 收藏
分享
金山一面:不完整,好像少了开始的十来分钟。1 类和对象的访问权限什么时候检测,也就是访问private私有成员时编译报错还是运行报错。2 那如何访问到类的私有成员:三种方法,友元,公有成员函数,指针(例如:直接用一个int指针去访问类的int成员,此时不会报错)。3 父类的private,public,protected成员在子类是否可见,能否访问?这个还和继承方式有关,组合起来九个情况。百度搜继承方式和父类访问控制属性图。4 父类成员和子类成员谁先什初始化,谁先析构。还可以研究下多个父类和一个子类,哪个父类先初始化,谁先析构,我记得和继承顺序是有关的。5 析构函数是虚函数吗?编译器会将其编译成虚函数。6 为什么析构函数是虚函数?7 指针引用区别?8 变量引用的引用和变量引用是否都会指向一个变量?9 const int*和int * const 区别10 左值引用和右值引用使用场景11 cpp选择题:忘记了12 move的原理,为什么能将左值变成右值13 malloc和new区别?14 new只返回一个对象的起始地址,delete也只传一个地址,delete怎么知道要释放多大的空间。(不是金山问的,好像是字节面试的时候问的)15 new返回值?16 为什么要有抛异常代替返回值17 cpp类型转换的操作符(static_cast……那四个)18 父类的指针和引用变成子类的指针和引用是否要调用构造函数(不用)。19 智能指针(auto_ptr,shared_ptr,unique_ptr)20 说说什么时候会发生循环引用,如何解决?21 如果vector v1里面存了unique_ptr,如何拷贝给另一个容器v222 map,hash插入删除的时间复杂度23 哈希冲突解决方法24 vector和list的迭代器失效25 进程线程区别26 线程会有自己的堆栈吗?27 算法题:找第k层节点个数:层序遍历。28 找相交链表的第一个公共节点。二面没记录😁,不过很短,貌似半小时,而且还写了算法题,估计拷打八股就十分钟tl:一面:4.22二面:4.29下午三点,测评六点发hr面:5.12直接发邮件约第二天。oc:6.18,base转武汉。录用邮件:6.21。很明显是补录的了,纯运气好,双非还是不要all in 等。
查看28道真题和解析
点赞 评论 收藏
分享
欢聚一面面试题:自我介绍请介绍你们公司的测试周期流程如果研发说需求自测即可,不需要经过测试验证,你会怎么评判这件事情?Code review,你们会关注什么?我现在给你一个具体的测试场景,订单支付(只考虑支付)请设计出具体的测试用例。你们系统框架是怎样的?消息队列你会怎样考虑测试场景以及消息队列的结构是怎样的?Radis缓存,你会怎么考虑测试场景?数据库的多表查询有哪几种?倒序查询前十条数据那如果只要第二名的数据呢?数据脏读,你怎么验证?你们公司的自动化框架怎么区别不同环境的自动化测试?接口自动化的脏数据怎么清理?接口自动化断言会关注哪一些数据?接口返回较为复杂的嵌套结构,你怎么验证数据?怎么实现异步接口数据检查AI自动化,你们是怎么使用落地的?UI自动化和接口自动化的区别UI自动化点击按钮,偶尔不生效,你会怎么排查?显示等待和隐式等待的区别是怎样的?介绍一下你们公司性能测试流程性能测试你会关注哪些指标?在做压测时,你怎么判断是否有达到瓶颈?Tps压不上去,但是CPU和内存都是正常的你有没有遇到让你印象比较深刻的性能缺陷?Python怎么实现多线程?Python深拷贝和浅拷贝的区别你们公司代码覆盖率平台是怎么搭建的?以及你们会怎么检查?
查看30道真题和解析
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务