unittest
# 最初,导入所需的所有基本模块。该单元测试模块是内置Python基于Java的JUnit。该模块提供了组织测试用例的框架。 #该selenium.webdriver模块提供了所有的webdriver实现。目前支持的WebDriver实现是Firefox,Chrome,Ie和Remote。该键类提供键在键盘像RETURN,F1,ALT等。 import unittest from selenium import webdriver import time from selenium.webdriver.common.keys import Keys #测试用例类继承自unittest.TestCase。继承TestCase类是告诉unittest模块这是一个测试用例的方法: # baiduorgsearch 是个名 可以变 class Baiduorgsearch(unittest.TestCase): # 开始 该的setUp是初始化的一部分,此方法将你要在这个测试用例类写的每一个测试函数之前被调用。在这里,您将创建Chrome WebDriver的实例。 def setUp(self): self.driver = webdriver.Chrome() # 这是测试用例方法。测试用例方法应始终以字符测试开始。此方法中的第一行创建对setUp方法中创建的驱动程序对象的本地引用。 def test_baidu_search(self): d = self.driver d.get('https://www.baidu.com') d.find_element_by_css_selector('#kw').send_keys('hello world') time.sleep(3) # 点回车键 d.find_element_by_xpath('//*[@id="su"]').send_keys(Keys.ENTER) time.sleep(5) # 结束 def tearDown(self): self.driver.quit() # 规定unittest 按规定执行 最后一行是运行测试套件的一些样板代码 if __name__ == "__main__": unittest.main()
# 百度上传一个图片 from selenium import webdriver d = webdriver.Chrome() d.clear() d.get('https://www.baidu.com') # 定位到照片上传 并点击 d.find_element_by_css_selector('span[class="soutu-btn"]').click()
# 定位到上传地址 并给出值 d.find_element_by_css_selector('input[type="file"]').send_keys('C:\Users\HP-NB\Downloads\IMG_0060.JPG') # windos 下 文件位置用 \ 隔开
# 注册一个账号 并截图最后结果 import unittest from selenium import webdriver import time from selenium.webdriver.common.keys import Keys url = 'http://39.107.96.138:3000/' class node(unittest.TestCase): def setUp(self): self.url = 'http://39.107.96.138:3000/' self.driver = webdriver.Chrome() self.driver.get(self.url) # test 是固定的,test_的执行顺序 是按test_后面的字母或数字排序执行的 def test_0register(self): driver = self.driver driver.find_element_by_css_selector('a[href="/signup"]').click() driver.find_element_by_id('loginname').send_keys('xiaomihehe') driver.find_element_by_id('pass').send_keys('123456') driver.find_element_by_id('re_pass').send_keys('123456') driver.find_element_by_id('email').send_keys('123456@qq.com') driver.find_element_by_css_selector('input[type="submit"]').click() time.sleep(5) def tearDown(self): # 对页面指定的元素截图,并实时用时间定义截图的名字 防止覆盖,引用time函数的格式化日期 picture_time = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time())) # 打印出来 print(picture_time) # 让它全屏 self.driver.maximize_window() # windows 下路径用双斜杠,有一个是转义符 picture_url = self.driver.save_screenshot('C:\Users\HP-NB\Desktop\' + picture_time + '.png') # 每次运行都是01的图片,能不能让它每次运行知道运行那个 # 打印出来 print("%s: 已经截图" % picture_url) self.driver.quit() if __name__ == '__main__': unittest.main()
# 做一个 登录 发帖 没有优化 import unittest from selenium import webdriver import time from selenium.webdriver.common.keys import Keys # 引入 动作链 ActionChains实现ActionChains是一种自动执行低级别交互的方法,例如鼠标移动,鼠标按钮操作,按键和上下文菜单交互。 # 这对于执行更复杂的操作非常有用,例如悬停和拖放。生成用户操作。 # 在ActionChains对象上调用操作方法时,操作将存储在ActionChains对象的队列中。当您调用perform()时,事件将按它们排队的顺序触发。 from selenium.webdriver.common.action_chains import ActionChains class cnode(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() self.driver.get('http://39.107.96.138:3000/') def test_login_post(self): self.driver.find_element_by_css_selector('a[href="/signin"]').click() self.driver.find_element_by_id('name').send_keys('user0') self.driver.find_element_by_id('pass').send_keys('123456') self.driver.find_element_by_css_selector('input[type="submit"]').click() self.driver.find_element_by_css_selector("#create_topic_btn > span").click() self.driver.find_element_by_id('tab-value').click() self.driver.find_element_by_css_selector('#tab-value > option:nth-child(2)').click() self.driver.find_element_by_id('title').send_keys("selenium lalal") # 赋个变量 niunai = self.driver.find_element_by_class_name('CodeMirror-scroll') # 必须在这里点击,在上面不行 niunai.click() # 官方使用方式 ActionChains(self.driver).move_to_element(niunai).send_keys("土豆土豆 地瓜在哪里?").perform() def tearDown(self): time.sleep(5) self.driver.quit() if __name__ == '__main__': unittest.main()