• Selenium操作测试对象


    常用元素操作API

    定位到元素后,需要对元素进行操作。一般来说,所有与页面交互的操作都将通过WebElement接口。

    webdriver中常用的操作元素的方法有如下几个:

    from selenium.webdriver.common.by import By
    from selenium import webdriver
    
    driver=webdriver.Chrome()
    driver.get("https://www.baidu.com/")
    
    #send_keys():在对象上模拟按键输入
    driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("海贼王")
    
    #clear():清除对象的内容
    driver.find_element(By.CSS_SELECTOR,"#kw").clear()
    
    #click():单击对象,强调对象的独立性
    driver.find_element(By.NAME,"tj_trnews").click()
    
    #submit():提交表单,要求对象必须是表单
    driver.find_element(By.ID,'form').submit()
    
    #is_displayed():用来判断对象是否可见,即css的display属性是否为none
    driver.find_element(By.CSS_SELECTOR,"#id").is_displayed()
    
    #is_enabled():判断对象是否被禁用
    driver.find_element(By.CSS_SELECTOR,"#id").is_enabled()
    
    #is_selected()判断对象是否被选中
    driver.find_element(By.CSS_SELECTOR,"#id").is_selected()
    
    #get_attribute("属性名"):获取对象的属性值
    driver.find_element(By.CSS_SELECTOR,"#id").get_attribute("name")
    
    #size:返回对象的尺寸
    print(driver.find_element(By.ID,"kw").size)
    
    #text:获取对象的文本
    print(driver.find_element(By.NAME,"tj_trnews").text)
    
    #tag_name:获取对象便签名称
    print(driver.find_element(By.ID,"kw").tag_name)
    
    #location:获取元素坐标
    print(driver.find_element(By.ID,"kw").location)
    

    鼠标事件

    这些操作包含在ActionChains类中。

    ActionChains类中鼠标操作常用方法:

    • context_click():右击
    • double_click():双击
    • drag_and_drop():拖动
    • move_to_element():鼠标移动到一个元素上
    • click_and_hold():按下鼠标左键在一个元素上

    举例:

    ele=driver.find_element(By.NAME,"tj_trnews")
    kw=driver.find_element(By.ID,"kw")
    
    #左键单击,以及单击拆解
    ActionChains(driver).click(ele).perform()
    ActionChains(driver).click_and_hold(ele).release(ele).perform()
    
    #左键双击
    ActionChains(driver).double_click(ele).perform()
    
    #右键单击
    ActionChains(driver).context_click(kw).perform()
    

    键盘事件

    keys()类提供键盘上所有按键操作,还可以模拟组合键。

    from selenium.webdriver.common.action_chains import ActionChains
    #组合键操作:ctrl+c
    ActionChains(driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()
    

    等待操作

    为了保证脚本的稳定性,有时候需要引入等待时间,等待页面加载元素后再进行操作,selenium提供三种等待时间设置方式。

    1、sleep():固定休眠时间设置,python的time包里提供了休眠方式sleep,导入包后就能使用
    sleep()方法以秒为单位,如果超时设置小于1秒,可以使用小数

    import time
    time.sleep(0.5)
    

    其实,这个函数的真正用途不是给我们看脚本的运行过程的,有时候网络原因,或页面加载慢。假设搜索框输入了selenium,搜索按钮还没加载出来,,那么脚本就报错。
    在适当位置加入time.sleep()有助于减少网络原因造成的脚本执行失败。

    2、implicitlyWait():比sleep()方法智能,sleep()方法只能在一个固定的时间等待,而implicitlyWait()可以在一个时间范围内等待,称为隐式等待

    driver.implicitly_Wait(100)
    

    备注:设置等待时间100s,页面上的元素5s后出现,只等待5s。不会等待100秒

    3、WebDriverWait():显示等待
    语法格式如下:

    WebDriverWait(driver.timeout,poll_frequency=0.5,ignore_exceptioins=None)
    

    timeout:最长超时时间,默认以秒为单位
    poll_frequency:休眠时间的间隔(步长)时间,默认为0.5秒(即每500毫秒扫描一次页面)
    ignore_exceptions:超时后的异常信息,默认情况下抛NoSuchElementException异常

  • 相关阅读:
    奇 arch/i386/kernel/head.o(.text+0x3e): undefined reference to `stack_start'
    惊爆:当Python代码遇到zip解压炸弹,未做防护的你后悔莫及!
    肝了1个月,做了10个Python可视化动图,有需要的自己拿
    抖音超火的九宫格视频是如何生成的,Python 告诉你答案
    找出文件夹中的相同文件,并移动到指定文件夹中
    8行Python代码绘制疫情地图
    怎么将python项目打包成exe程序?
    利用Pycharm + Django搭建一个简单Python Web项目
    转行Python会经历的几个学习阶段!未来有哪些就业方向?
    一个python脚本就可以B站查找弹幕发送者!
  • 原文地址:https://www.cnblogs.com/TD1900/p/11941944.html
Copyright © 2020-2023  润新知