• selenium_UI自动化——篇1(基础)


    元素定位的几种方式:

    (1)driver.find_element_by_id("idname")

    (2)driver.find_element_by_name("name")

    (3)driver.find_element_by_class_name("classname")

    (4)driver.find_element_by_tag_name("tagname")——tag:<div><input><a>

    (5)driver.find_element_by_link_text("linkurl")——link

    (6)driver.find_element_by_partial_link_text("")——link里面的文本

    (7)driver.find_element_by_xpath("  ")

    ——eg:find_element_by_xpath(“//input[@id='kw']/span”)

    ——//表示当前页面某个目录下,input表示定位元素的标签名,[@id='kw']表示这个元素的id属性值等于kw,然后再定位到下一级的span

    ——与css_selector 的区别在于,同级用[@xxxx]来表示,下级用/,@可能是表id,name,class,*元素的任意属性值都可以用,比如,@maxlength='100',@autocomplete='off',@type='submit',

    (8)driver.find_element_by_css_selector("")——可以内含classname,idname,*,元素标签,父子元素>,紧接着的元素+,attribute 

    ——eg:find_element_by_css_selector(".s_ipt")//classname——(“#idname”)——(“span>input”)父子——(“[name='kw']”)另一种写法——(“[type='submit']”)——("*")所有元素

    (9)用By来定位元素,相当于另外一套写法

    driver.find_element(By.ID,'kw')……NAME,CLASS_NAME,XPATH,PARTIAL_LINK_TEXT

    ====================================================

    举个例子:

    driver=webdriver.chrome()

    file_path = “www.baidu.com”

    driver.get(file_path)

    ==================================================

    控制浏览器

    (1)driver.get("url")

    (2)driver.quit()

    (3)driver.close()

    浏览器有两个tab,此时close方法就只能关闭driver正在操作的窗口而不能关闭浏览器了。

    (1)控制浏览器窗口大小

    driver.set_window_size()

    driver.maximize_window()

    (2)控制浏览器后退、前进

    driver.back()

    driver.forward()

    (3)模拟浏览器刷新

    driver.refresh()

    (4)简单元素操作

    clear()//清除文本

    send_keys()//模拟按键输入

    click() //单击元素

    webElement接口常用方法

    submit()

    size

    text

    get_attribute(name)

    is_displayed()

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

    driver.find_element_by_id("idname").click()

    driver.find_element_by_id("idname").size

    driver.find_element_by_id("idname").text

    driver.find_element_by_id("idname").get_attribute('type')

    driver.find_element_by_id("searchbox").submit()

    鼠标事件封装在ActionChains中

    右击 context_click(xxx)

    双击double_click()

    拖动drag_and_drop()

    鼠标悬停move_to_element()

    right_click= driver.find_element_by_id("xx")

    AcitonChains(driver).context_click(right_click).perform()

    perform()执行所有ActionChains中的存储的行为,理解为整个操作的提交动作

    ================================================================

    键盘事件

     send_keys("text")

    send_keys(Keys.TAB)

    send_keys(Keys.CONTROL,'a')=====ctrl+A

    driver.find_element_by_id("idname").send_keys(Keys.TAB)

    =================================================================

    获取验证信息

    通常有:title, URL, text

    title=driver.title

    now_url=driver.current_url

    text=driver.find_element_by_id(‘idname’).text

    ===================================================================

    设置元素等待

    WebDriver 提供了两种类型的等待,显示等待和隐式等待

    显示等待:WebDriverWait()

    ————WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)

    timeout:最长超过事件,默认以秒单位

    poll_frequency:检测的时间间隔,默认为0.5s

    ignored_exceptions:超时候的异常信息,默认情况下抛NoSuchElementException异常

    until(method,message='xxxx')

    ————eg:

    ————element= WebDriverWait(driver,5,0.5).until(expected_conditions.presence_of_element_located((By.ID,"kw")))

    ————element.send_keys("hhh")

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

    预期条件判断方法见表格p97

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

    隐式等待:implicitly_wait(10)超过10s还未被加载,抛出nosuchelementexception

    显示等待才:until,until_not

    is_displayed()

    =======================================================

    休眠方法

    sleep(5)

    =======================================================

    定位一组元素

    eg:选择页面上所有的tagname为input的元素

    inputs=driver.find_element_by_tag_name('input')

    过滤出type为checkbox的元素,单击勾选

    for i in inputs:

      if i.get_attribute('type')=='checkbox'

        i.click()

        time.sleep(1)

    =========================================================

    多表单切换

    switch_to.frame()讲当前定位的主体切换到frame/iframe 表单的内嵌页面中,参数可以取表单的id或name

    switch_to.window()跳回到最外层的页面

    ==========================================================

    多窗口切换

    switch_to.window()实现在不同的窗口切换

    获得当前窗口句柄:

    c_window=driver.current_window_handle

    获得当前打开的所有窗口的句柄

    all_window=driver.window_handles

    ======================================================================

    警告窗处理

    switch_to_alert()方法定位到alert/confirm/prompt 然后使用text,accept,dismiss ,send_keys等方法进行操作

    text:返回当中的文字信息

    accept():接受现有警告框

    dismiss():解散现有警告框

    send_keys(KeysToSend)发送文本至警告框.讲文本发送至警告框

    driver.switch_to_alert().accept()

    driver.quit()

    just move on
  • 相关阅读:
    webpack(4) 配置
    query 与 params 使用
    git 操作
    一个vue练手的小项目
    9/10案例
    9/9python案例
    jmeter录制移动端脚本(二) --- badboy工具
    用jmeter连接数据库并进行操作
    jmeter录制脚本(一) --本身自带功能
    Jmeter组件使用
  • 原文地址:https://www.cnblogs.com/ql70me/p/10632498.html
Copyright © 2020-2023  润新知