selenium笔记(四)--鼠标、键盘操作

本文是关于Selenium的鼠标和键盘操作笔记,包括基本操作如send_keys(), click(), clear(), back(), quit(), refresh(), maximize_window(),以及进阶的ActionChains类的使用,如链式和分步写法,以及鼠标操作(double_click, context_click, move_to_element)和键盘操作(key_down, key_up, send_keys, 组合按键)。" 116225744,9438111,Flutter App的国际化实现指南,"['Flutter开发', '多语言支持', '国际化配置', 'Flutter Intl插件']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

web控件操作

  • 常见操作
    • 输入:send_keys()
    • 点击:click()
    • 清除:clear()
    • 后退:back()
    • 关闭浏览器:quit()
    • 刷新页面:refresh()
    • 窗口最大化:maximize_window()
  • 进阶操作
    • ActionChains类:https://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains
    • ActionChains使用:
      • 方式一:
        • 链式写法:ActionChains(驱动).move_to_element(元素).click(元素).perform()
      • 方式二:
        • 分步写法:
          • actions = ActionChains(驱动)
          • actions.move_to_element(元素)
          • actions.click(元素)
          • actions.perform()
      • perform():执行ActionChains中存储的动作
    • 鼠标操作
      • 双击:double_click
      • 右击:context_click
      • 悬浮:move_to_element
    • 键盘操作
      • 按下:key_down(keys)
      • 释放:key_up(keys)
      • 按下并释放:send_keys(keys)
      • 组合按键:key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL)
  • from time import sleep
    from selenium import webdriver
    from selenium.webdriver import ActionChains
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support import expected_conditions
    from selenium.webdriver.support.wait import WebDriverWait
    
    
    class TestAddStudent:
        def setup(self):
            self.driver = webdriver.Chrome()
            self.driver.maximize_window()
            self.driver.implicitly_wait(3)   
            self.driver.get(url)
    
        def teardown(self):
            sleep(3)
            self.driver.quit()
    
        def test_method(self):
            self.driver.find_element(By.ID, 'username').send_keys("china")
            self.driver.find_element(By.ID, 'password').send_keys("Zz123456")
            self.driver.find_element(By.ID, 'btn_submit').click()
            sleep(3)
            self.driver.refresh()
            sleep(3)
            self.driver.back()
            sleep(3)
            self.driver.find_element(By.ID, 'username').clear()
            print(self.driver.title)
    
        def test_login(self):
            self.driver.find_element(By.ID, 'username').send_keys("china")
            self.driver.find_element(By.ID, 'password').send_keys("Zz123456")
            self.driver.find_element(By.ID, 'btn_submit').click()
    
        def test_wait(self):
            self.test_login()
            self.driver.find_elements(By.XPATH, "//*[@class='btn btn-primary pull-right']")[0].click()
            self.driver.find_element(By.XPATH, "//*[@href='#user']").click()
            WebDriverWait(self.driver, 10).until(expected_conditions.element_to_be_clickable((By.ID, 'addNew')))
            self.driver.find_element(By.ID, 'addNew').click()
    
        def test_action_chains(self):
            self.test_login()
            personal = self.driver.find_element(By.CLASS_NAME, 'dropdown-toggle')
            ActionChains(self.driver).move_to_element(personal).perform()
            sleep(3)
            self.driver.find_element(By.ID, 'logoutLink').click()
    
        def test_double_click(self):
            self.test_login()
            self.driver.find_elements(By.XPATH, "//*[@class='btn btn-primary pull-right']")[0].click()
            # WebDriverWait(self.driver, 10).until(expected_conditions.element_to_be_clickable((By.XPATH, "//*[@href='#user']")))
            self.driver.find_element(By.XPATH, "//*[@href='#user']").click()
            sleep(3)
            countrywide = self.driver.find_element(By.XPATH, "//*[@class='ztree no-padding']/li/a")
            action = ActionChains(self.driver)
            action.double_click(countrywide)
            action.perform()
    
        def test_key_down_up(self):
            self.test_login()
            self.driver.find_elements(By.XPATH, "//*[@class='btn btn-primary pull-right']")[0].click()
            self.driver.find_element(By.XPATH, "//*[@href='#user']").click()
            sleep(3)
            input_name = self.driver.find_element(By.XPATH, "//*[@class='form-control']")
            ActionChains(self.driver).click(input_name).perform()
            ActionChains(self.driver).key_down(Keys.SPACE).key_up(Keys.SPACE).perform()
            input_name.send_keys("test")
    
        def test_send_key(self):
            self.test_login()
            self.driver.find_elements(By.XPATH, "//*[@class='btn btn-primary pull-right']")[0].click()
            self.driver.find_element(By.XPATH, "//*[@href='#user']").click()
            sleep(3)
            input_name = self.driver.find_element(By.XPATH, "//*[@class='form-control']")
            ActionChains(self.driver).click(input_name).perform()
            ActionChains(self.driver).send_keys(Keys.SPACE).perform()
            input_name.send_keys("test")
    
        def test_copy(self):
            self.test_login()
            self.driver.find_elements(By.XPATH, "//*[@class='btn btn-primary pull-right']")[0].click()
            self.driver.find_element(By.XPATH, "//*[@href='#user']").click()
            sleep(3)
            input_name = self.driver.find_element(By.XPATH, "//*[@class='form-control']")
            ActionChains(self.driver).click(input_name).perform()
            ActionChains(self.driver).send_keys(Keys.SPACE).perform()
            input_name.send_keys("test")
            sleep(3)
            ActionChains(self.driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()
            sleep(3)
            ActionChains(self.driver).key_down(Keys.CONTROL).send_keys('x').key_up(Keys.CONTROL).perform()
            sleep(3)
            ActionChains(self.driver).key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()
    

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值