selenium_编写测试

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()
原文地址:https://www.cnblogs.com/niunai/p/10250686.html