汇总:常用基本操作语句(unittest)

from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get("https://www.baidu.com")

#1.浏览器最大化
driver.maximize_window()
#2.获取当前浏览器尺寸
size = driver.get_window_size()
print(size)
#3.设置当前浏览器尺寸
driver.set_window_size(400, 400)
size = driver.get_window_size()
print(size)

#4.获取浏览器位置
position = driver.get_window_position()
print(position)
#5.设置浏览器位置
driver.set_window_position(100,200)
position = driver.get_window_position()
print(position)

-------------------------------------
#获取当前页面标题
title = driver.title
print(title)

#获取当前页面地址
url = driver.current_url
print(url)
#获取当前页面标源代码
source = driver.page_source
print(source)
------------------------------------


#1.页面刷新
driver.refresh()

#2.页面回退
driver.back()

#3.页面前进
driver.forward()

#4.页面截图
#(1)方式一
data = driver.get_screenshot_as_png()
with open('baidu1.jpg','wb') as f:
  f.write(data)
#(2)方式二
driver.get_screenshot_as_file('baidu2.png')

from selenium import webdriver
import time

driver = webdriver.Firefox()
driver.get("https://www.baidu.com")


driver.find_element_by_id("kw").send_keys("小瓶子喵")
driver.find_element_by_id("su").click()

driver.find_element_by_name("wd").send_keys("小瓶喵")

driver.find_element_by_class_name("s_ipt").send_keys("小瓶喵")

driver.find_element_by_tag_name("input").send_keys("小瓶喵")
driver.find_element_by_link_text("hao123").click()
driver.find_element_by_parttial_link_text("hao12").click()

driver.find_element_by_xpath(".//*[@id='su']").click()

driver.find_element_by_css_selector("#kw")

# 导入webdriver
from selenium import webdriver
#获取驱动路径
driver_path = './chromedriver.exe'
#创建一个浏览器对象
driver = webdriver.Chrome(executable_path=driver_path)
#设置全屏
driver.maximize_window()
driver.get('https://www.baidu.com/')
#css结合基本属性定位(id,class,标签)
element_input1 = driver.find_element_by_css_selector('#kw') #id
element_input2 = driver.find_element_by_css_selector('.s_ipt') #class
element_input3 = driver.find_element_by_css_selector('form') #标签
print(element_input1)
print(element_input2)
print(element_input3)

from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")

#复数定位
driver.find_elements_by_class_name(“xx”)[1]

#By定位
driver.find_element(By.ID,"kw")

driver.find_element(By.NAME,"wd")

driver.find_element(By.CLASS_NAME,"s_ipt")

driver.find_element(By.LINK_TEXT,"用户管理")

 

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
driver.get(r"https://www.baidu.com/")

time.sleep(5)
mouse = driver.find_element_by_id("s-usersetting-top")
ActionChains(driver).move_to_element(mouse).perform()
time.sleep(2)
driver.find_element_by_link_text("高级搜索").click()

 

 

 

 

 

# 切换iframe,此处id="xiaoping"
driver.switch_to.frame("xiaoping")
driver.find_element_by_name("word").send_keys("iframe输入")
# 切换后 切回来
driver.switch_to.default_content()
#class 定位
iframe = driver.find_element_by_class_name("xxxx1")
driver.switch_to.frame(iframe)
driver.find_element_by_name("word").send_keys("iframe输入")
# 切换后 切回来
driver.switch_to.default_content()
#索引定位iframe
driver.switch_to.frame(2)
driver.find_element_by_name("email").send_keys("111")
driver.switch_to.frame(0) //第一层iframe

driver.switch_to.frame(2) //第一层iframe

---------------------

跳出所有frame,回到主界面(Top页面):

driver.switch_to.default_content()

---------------------

返回上一级frame:

driver.switch_to.parent_frame()

打印当前句柄
c_handle = driver.current_window_handle

print(c_handle)

---------------------

#打印所有的句柄

all_handle = driver.window_handles

print(all_handle)
#切换到新窗口
driver.switch_to.window(all_handle[-1])

sele = driver.find_element_by_class_name("c-select-selection")
Select(sele).select_by_visible_text("最近一周")
#value
Select(sele).select_by_value("20")
#索引
Select(sele).select_by_index(1)

 

alert = driver.switch_to.alert
t = alert.text
print(t)
alert.accept()
# 切换到弹出框:a = driver.switch_to_alert()
# 打印弹出框文本信息:print(a.text)
# 确定按钮:a.accept()
# 取消按钮:a.dismiss()
# 输入值:a.send_keys()

 

 

 

 from selenium.webdriver.support.wait import WebDriverWait
 ele = WebDriverWait(self.driver, timeout, self.t).until(EC.presence_of_element_located(locator))
 ele.send_keys("123")

 

#只要一个符合条件的元素加载出来就通过
presence_of_element_located()
#元素可见则通过
visibility_of_element_located()

 

 

 

# _*_ coding:UTF-8

import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
# 创建一个浏览器对象
driver = webdriver.Chrome()
#打开网页地址
driver.maximize_window()
driver.get('http://sahitest.com/demo/keypress.htm')
time.sleep(3)
key_up_radio = driver.find_element_by_id('r1') # 监测按键升起
key_down_radio = driver.find_element_by_id('r2') # 监测按键按下
key_press_radio = driver.find_element_by_id('r3') # 监测按键按下升起
enter = driver.find_elements_by_xpath('//form[@name="f1"]/input')[1] # 输入框
result = driver.find_elements_by_xpath('//form[@name="f1"]/input')[0] # 监测结果
# 监测key_down
key_down_radio.click()
ActionChains(driver).key_down(Keys.CONTROL,enter).key_up(Keys.CONTROL).perform()
# 监测key_up
key_up_radio.click()
enter.click()
ActionChains(driver).key_down(Keys.SHIFT).key_up(Keys.SHIFT).perform()
# 监测key_press
key_press_radio.click()
enter.click()
ActionChains(driver).send_keys('a').perform()

 

 

 

 

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions as EC

class Base():

    def __init__(self,driver):
      self.driver = driver

    def find(self,locator):
        ele = WebDriverWait(self.driver, 10).until(lambda x: x.find_element(*locator))
        return ele

    def send(self,locator,text):
        ele =self.find(locator)
        ele.send_keys(text)

    def click(self,locator):
        self.find(locator).click()


    def clear(self,locator):
        self.find(locator).clear()

    def get_text(self, locator):
        '''获取元素文本值'''
        try:
            ele =self.find(locator).text
        except:
            ele =""
        return ele


    def is_element_exist(self,locator):
        '''判断元素是否存在,结果返回布尔值 ture 或 false'''
        try:
            self.find(locator)
            print("找到元素了!!!!!")
            return True
        except:
            print("找不到元素")
            return False

    def text_in_element(self,locator,_text):
        '''判断元素text属性'''
        try:
            r = WebDriverWait(self.driver,30,1).until(EC.text_to_be_present_in_element(locator,_text))
            return r
        except:
            return False

    def value_in_element(self,locator,text):
        '''判断元素value属性'''
        try:
            r = WebDriverWait(self.driver,30,1).until(EC.text_to_be_present_in_element(locator,_text))
            return r
        except:
            return False

    def move_to_element(self,locator):
        '''鼠标悬停'''
        element = self.find(locator)
        ActionChains(self.driver).move_to_element(element).perform()

    def select_by_index(self,locator,index=0):
        '''select下拉框,index索引'''
        element =self.find(locator)
        Select(element).select_by_index(index)

    def select_by_value(self,locator,value):
        '''select下拉框,value'''
        element =self.find(locator)
        Select(element).select_by_index(value)

    def select_by_text(self,locator,_text):
        '''select下拉框,文本'''
        element =self.find(locator)
        Select(element).select_by_visible_text(_text)

    def is_alert(self,timeout=3):
        '''判断是否有alert,没有返回false,有返回alert对象'''
        try:
            alert = WebDriverWait(self.driver,timeout,1).until(EC.alert_is_present())
            return alert
        except:
            return False

    def js_focus_element(self,locator):
        '''聚焦元素'''
        target =self.find(locator)
        self.driver.execute_scrit("arguments[0].scrollIntoView();",target)

    def js_focus_top(self,locator):
        '''滑动到顶部'''
        js ="window.scrollTo(0,0)"
        self.driver.execute_scrit(js)


    def js_focus_end(self,locator):
        '''滑动到底部'''
        js ="window.scrollTo(0,document.body.scrollHeight)"
        self.driver.execute_scrit(js)



if __name__ == '__main__':
    '''自测函数'''
    from selenium import webdriver
    driver = webdriver.Firefox()
    driver.get("http://192.168.43.57/phpwind/admin.php#initiator")
    loc1 = ("name","admin_name")
    loc2 = ("name", "admin_pwd")
    loc3 = ("name", "submit")
    login_xpath = ("xpath",'html/body/table/tbody[1]/tr[1]/td/div/div/p/a[2]')

    b = Base(driver)  #实例
    b.send(loc1,"admin")
    b.send(loc2, "123456")
    b.click(loc3)
    t = b.get_text(login_xpath)
    print(t)
    assert t == "[注销]"

 

 

 

from datetime import time
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.action_chains import ActionChains
from common.logger import Logger
from selenium.common.exceptions import TimeoutException
import time

logger = Logger('webbase.py').getLogger()

class WebBase():
    '''基于原生的selenium做二次封装'''

    _instance = False
    timeout = 10

    def __init__(self, driver):
        self.driver = driver
        self.t = 0.5


    def findElement(self, locator, timeout=timeout):
        '''定位到元素,返回元素对象,没定位到,Timeout异常'''
        try:
            if isinstance(locator, list):
                locator = tuple(locator)
            if not isinstance(locator, tuple):
                logger.error('locator参数类型错误,必须传元祖类型:loc = ("id", "value1")')
            logger.debug("正在定位元素信息:定位方式->%s, value值->%s" % (locator[0], locator[1]))
            ele = WebDriverWait(self.driver, timeout, self.t).until(EC.presence_of_element_located(locator))
            logger.debug("定位元素{}成功".format(locator))
            return ele
        except TimeoutException as e:
            logger.error('未定位到元素',locator)
            raise e

    def findElements(self, locator):
        if not isinstance(locator, tuple):
            print('locator参数类型错误,必须传元祖类型:loc = ("id", "value1")')
        else:
            try:
                print("正在定位元素信息:定位方式->%s, value值->%s"%(locator[0], locator[1]))
                eles = WebDriverWait(self.driver, self.timeout, self.t).until(EC.presence_of_all_elements_located(locator))
                return eles
            except:
                return []

    def sendKeys(self, locator, text=''):
        '''输入文本'''
        try:
            ele = self.findElement(locator)
            ele.send_keys(text)
            logger.debug('send keys {} 成功'.format(text))
        except Exception as e:
            logger.error('send keys {} 失败'.format(text))
            raise e


    def click(self, locator):
        '''点击元素'''
        try:
            ele = self.findElement(locator)
            ele.click()
            logger.debug('click {} 成功'.format(locator))
        except Exception as e:
            logger.error('click {} 失败'.format(locator))
            raise e

    def clear(self, locator):
        '''清空文本'''
        ele = self.findElement(locator)
        ele.clear()

    def isSelected(self, locator):
        '''判断元素是否被选中,返回bool值'''
        ele = self.findElement(locator)
        r = ele.is_selected()
        return r


    def is_title(self, _title=''):
        '''判断标题存在,返回bool值'''
        try:
            result = WebDriverWait(self.driver, self.timeout, self.t).until(EC.title_is(_title))
            print(result.get_attribute("innerHTML"))
            return result
        except:
            return False

    def is_title_contains(self, _title=''):
        '''判断标题中包含某个文本,返回bool值'''
        try:
            result = WebDriverWait(self.driver, self.timeout, self.t).until(EC.title_contains(_title))
            return result
        except:
            return False

    def is_text_in_element(self, locator, _text=''):
        '''判断元素中是否有某个文本,返回bool值'''
        if not isinstance(locator, tuple):
            print('locator参数类型错误,必须传元祖类型:loc = ("id", "value1")')
        try:
            result = WebDriverWait(self.driver, self.timeout, self.t).until(EC.text_to_be_present_in_element(locator, _text))
            return result
        except:
            return False

    def is_value_in_element(self, locator, _value=''):
        '''判断元素中是否有某个值,返回bool值, value为空字符串,返回Fasle'''
        if not isinstance(locator, tuple):
            print('locator参数类型错误,必须传元祖类型:loc = ("id", "value1")')
        try:
            result = WebDriverWait(self.driver, self.timeout, self.t).until(EC.text_to_be_present_in_element_value(locator, _value))
            return result
        except:
            return False

    def is_alert(self, timeout=3):
        '''判断alert,存在返回alert实例,不存在,返回false'''
        try:
            result = WebDriverWait(self.driver, timeout, self.t).until(EC.alert_is_present())
            return result
        except:
            return False

    def get_title(self):
        '''获取title'''
        return self.driver.title

    def get_text(self, locator):
        '''获取文本'''
        try:
            t = self.findElement(locator).text
            return t
        except:
            print("获取text失败,返回'' ")
            return ""

    def get_attribute(self, locator, name):
        '''获取属性'''
        try:
            element = self.findElement(locator)
            return element.get_attribute(name)
        except:
            print("获取%s属性失败,返回'' "%name)
            return ""


    def js_focus_element(self, locator):
        '''聚焦元素'''
        target = self.findElement(locator)
        self.driver.execute_script("arguments[0].scrollIntoView();", target)

    def js_scroll_top(self):
        '''滚动到顶部'''
        js = "window.scrollTo(0,0)"
        self.driver.execute_script(js)

    def js_scroll_end(self,x=0):
        '''滚动到底部'''
        js = "window.scrollTo(%s,document.body.scrollHeight)"%x
        self.driver.execute_script(js)

    def select_by_index(self, locator, index=0):
        '''选择下拉列表,通过索引,index是索引第几个,从0开始,默认选第一个'''
        element = self.findElement(locator)  # 定位select这一栏
        Select(element).select_by_index(index)

    def select_by_value(self, locator, value):
        '''选择下拉列表,通过value属性'''
        element = self.findElement(locator)
        Select(element).select_by_value(value)


    def select_by_text(self, locator, text):
        '''选择下拉列表,通过文本值定位'''
        element = self.findElement(locator)
        Select(element).select_by_visible_text(text)


    def switch_iframe(self, id_index_locator):
        '''切换iframe'''
        try:
            time.sleep(1)
            if isinstance(id_index_locator, int):
                self.driver.switch_to.frame(id_index_locator)
            elif isinstance(id_index_locator, str):
                self.driver.switch_to.frame(id_index_locator)
            elif isinstance(id_index_locator, list):
                ele = self.findElement(id_index_locator)
                self.driver.switch_to.frame(ele)
            logger.info("iframe 切换为{}".format(id_index_locator))
            time.sleep(1)
        except Exception as e:
            logger.error("iframe{}切换异常".format(id_index_locator))
            raise e


    def switch_iframe_out(self):
        '''切换iframe到最外层'''
        try:
            self.driver.switch_to.default_content()
        except:
            print("iframe切换异常")

    def switch_iframe_up(self):
        '''切换iframe到上一层'''
        try:
            self.driver.switch_to.parent_frame()
        except:
             print("iframe切换异常")

    def switch_handle(self, window_name):
        '''切换窗口'''
        self.driver.switch_to.window(window_name)

    def switch_alert(self):
        '''切换弹窗'''
        alert = WebDriverWait.until(EC.alert_is_present())
        return alert

    def move_to_element(self, locator):
        '''鼠标悬停操作'''
        ele = self.findElement(locator)
        ActionChains(self.driver).move_to_element(ele).perform()

    def isElementExist(self,locator, timeout):
        '''判断元素是否存在'''
        try:
            if isinstance(locator, list):
                locator = tuple(locator)
            WebDriverWait(self.driver,timeout).until(EC.presence_of_element_located(locator))
            logger.debug('只查询:查询元素{} 存在'.format(locator))
            return True
        except Exception as e:
            logger.debug('只查询:查询元素{} 不存在'.format(locator))
            return False





if __name__ == "__main__":
    driver = webdriver.Firefox()
    web = WebBase(driver)
    driver.get("https://home.cnblogs.com/u/yoyoketang/")
    loc_1 = ("id", "header_user_left")
    t = web.get_text(loc_1)
    print(t)

 

posted @ 2023-02-07 23:39  小瓶子喵  阅读(55)  评论(0)    收藏  举报