高级控件交互方法(web)

'''高级控件交互方法'''
#常见的操作事件(右键点击,页面滑动,表单操作等)

'''actions'''
#ActioChains:执行PC端的鼠标点击,双击,右键,拖拽等事件
#TouchActions:模拟PC和移动端的点击,滑动,拖拽,多点触控等多种手势操作
'''ActioChains用法1'''
#用法一:点击,右键,双击操作
#action=ActioChains(driver)
#action.click(element) 点击
#action.double_click(element) 双击
#action.context_click(element) 右键
#action.perform()
from selenium import webdriver
from selenium.webdriver import ActionChains
from time import sleep

class TestActionChains():
    def setup(self):
        self.driver=webdriver.Chrome()
        self.driver.implicitly_wait(5)
        self.driver.maximize_window()

    def teardown(self):
        self.driver.quit()

    def test_click(self):

        self.driver.get('http://sahitest.com/demo/clicks.htm')
        element_click=self.driver.find_element_by_xpath("//input[@value='click me']")
        element_doubleclick =self.driver.find_element_by_xpath("//input[@value='dbl click me']")
        element_rightclick =self.driver.find_element_by_xpath("//input[@value='right click me']")
        action=ActionChains(self.driver)
        action.click(element_click)
        action.double_click(element_doubleclick)
        action.context_click(element_rightclick)
        sleep(3)
        action.perform()
        sleep(3)
'''另一种写法'''
from selenium import webdriver
from selenium.webdriver import ActionChains
from time import sleep
def test_click():
    driver=webdriver.Chrome()
    driver.implicitly_wait(5)
    driver.get('http://sahitest.com/demo/clicks.htm')
    element_click=driver.find_element_by_xpath("//input[@value='click me']")
    element_doubleclick=driver.find_element_by_xpath("//input[@value='dbl click me']")
    element_rightclick=driver.find_element_by_xpath("//input[@value='right click me']")
    action=ActionChains(driver)
    action.click(element_click)
    action.double_click(element_doubleclick)
    action.context_click(element_rightclick)
    action.perform()
    sleep(3)
    driver.quit()

if __name__=='__main__':
    test_click()
'''ActioChains用法2'''
#用法一:鼠标移动到某个元素上
#action=ActioChains(self.driver)
#action.move_to_element(element)
#action.perform()

from selenium import webdriver
from selenium.webdriver import ActionChains
from time import sleep
def demo_move():
    driver=webdriver.Chrome()
    driver.implicitly_wait(5)
    driver.get('https://ceshiren.com/c/40-category/40')
    ele=driver.find_element_by_link_text('精华帖')
    action=ActionChains(driver)
    action.move_to_element(ele)
    action.perform()
    sleep(3)
    driver.quit()

if __name__=='__main__':
    demo_move()
'''ActioChains用法3'''
#将一个元素拖拽到某一个元素上
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from time import sleep
def test_dragdrop():
    driver=webdriver.Chrome()
    driver.implicitly_wait(5)
    driver.get('https://sahitest.com/demo/dragDropMooTools.htm')
    element_drag=driver.find_element(By.ID,'dragger')
    element_drop=driver.find_element(By.CLASS_NAME,'item')
    action=ActionChains(driver)
    action.drag_and_drop(element_drag,element_drop)
    action.perform()
    sleep(3)
    driver.quit()

if __name__=='__main__':
    test_dragdrop()
#其他方法
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from time import sleep
def test_dragdrop():
    driver=webdriver.Chrome()
    driver.implicitly_wait(5)
    driver.get('https://sahitest.com/demo/dragDropMooTools.htm')
    element_drag=driver.find_element(By.ID,'dragger')
    element_drop=driver.find_element(By.CLASS_NAME,'item')
    action=ActionChains(driver)
    #方法一
    #action.click_and_hold(element_drag).release(element_drop)
    #方法二
    action.click_and_hold(element_drag).move_to_element(element_drop).release()
    action.perform()
    sleep(3)
    driver.quit()

if __name__=='__main__':
    test_dragdrop()
2 个赞