web自动化测试复习巩固第二天

定位方法

selenium4:

  driver.find_element(定位策略用By类,定位表达式) --- 返回表达式匹配的第一个元素,如果找不到元素,会报错。

  driver.find_elements(定位策略用By类,定位表达式) --- 返回表达式匹配的所有元素,返回的是列表类型。

  By类:管理8种定位方式,每一种定位方式,都是一个类属性

  例:查找元素的方法 ele = driver.find_element(By.XPATH,'//input[contains(@class,"quickSearchInput")]')

#元素的输入操作,按Enter搜索

  ele.send_keys("selenium4",Keys.ENTER)


WebElement类:(属性和方法)

  常见的:

    1.clear() 清除操作

    2.send_keys() 输入操作

    3.click() 点击操作

 

    4.text() 获取元素的文本

    5.get_attribute() 获取元素属性

 

    6.location_once_scrolled_into_view 将元素滚动到可见区域

 

    7.screenshot() 获取当前元素的截图

    8.size 获取当前元素的大小

    9.location 获取当前原色的坐标

 

    10.is_displayed() 元素是否可见

    11.is_enabled() 元素是否可用

    12.is_selected() 复选框/单选框,当前元素是否选中了


三大等待

  1.sleep --- 强制等待

  2.智能等待

    2.1显式等待(常用)

      1.条件很丰富

      2.那里需要等待条件成立,哪里就调用,一次性

      条件:expected_conditions

      等待:WebDriverWait

      等待xxx条件成立,多久查询条件是否成立,成立就不等待了,不成立则超时报错。需要导包

        from selenium.webdriver.support import expected_conditions

        from selenium.webdriver.support.wait import WebDriverWait

      条件:

        visiblity_of_element_located(locator) 指定元素可见

        presence_of_element_located(locator) 指定元素存在

        element_to_be_clickable(mark) 指定的元素可点击

      等待:

        WebDriverWait(driver,超时时间,轮询周期-多久确认一次条件是否成立,默认是0.5s).until(条件)

    2.2隐式等待

      driver.implicitly_wait(10) 在会话期间只调用一次,全局可用。条件单一,即元素存在


面试题:找不到元素noSuchElement是什么原因?

  1.元素可能在iframe中

  2.没有等待,元素还没有加载出来

  3.元素定位表达式错误


 

三大切换

  窗口切换

    1.等待新窗口出现

      time.sleep(1)

    2.获取当前所有打开的窗口 --列表

      wins = driver.window_handles

      print("当前会话打开的所有窗口:",wins)

    3.切换到最后一个窗口

      driver.switch_to.window(wins[-1])

    4.切换回去

      driver.switch_to.window(wins[0])

  iframe切换

    1.识别元素在iframe当中

 

    2.切换进入iframe -- 传入iframe的定位

      driver.switch_to.frame(id/name属性 或者 iframe的索引 或者 webelement对象-driver.find_element)

        id/name属性

        webelement对象-driver.find_element ---- driver.find_element

        iframe的索引 ---- 获取到的是列表,从0开始

    3.切换回最开始的html

      driver.switch_to.default_content()

    4.回到上一层的iframe

      driver.switch_to.parent_frame()

alert切换

1.警告框 2.确认框 3.提示框

案例地址:http://www.runoob.com/js/js-popup.html

  1.触发alert弹框的出现

    等待:

      time.sleep(0.5)

      WebDriverWait(driver,5).until(EC.alert_is_present())

  2.调用driver.switch_to.alert 切换到alert弹框 --- Alert类

    driver.switch_to.alert 或者 alert = Alert(driver) 需要导入Alert包

  3.关闭弹框

    alert.accept() 确定

    alert.dismiss() 取消

    alert.text 获取文本

    alert.send_keys() 输入文本

 
posted @ 2024-01-29 16:22  xuhao2008  阅读(18)  评论(0)    收藏  举报