成都9班-何加云 发表于 2021-11-30 21:51:30

selenium常用的API和unittest单元测试框架

selenium中的等待1.线程等待,机械等待from time importsleepfrom selenium importwebdriverfromselenium.webdriver.common.by import Byfromselenium.webdriver.support import expected_conditions as ECfromselenium.webdriver.support.ui import WebDriverWaitdriver=webdriver.Chrome()driver.get("http://www.baidu.com")driver.find_element_by_id("kw").send_keys("python")sleep(2) #会固定将进程延时两秒钟进行 2.隐式等待:在规定时间内等待页面元素全部加载完成,什么时候加载完什么时候进行下一步driver.implicitly_wait(20) 3.显示等待:在规定时间内等到某个元素加载完成,就进行下一步。WebDriverWait(driver,20,poll_frequency=0.5).until(EC.presence_of_all_elements_located((By.ID,"kw")))driver.find_element_by_id("su").click() #driver是操作的页面对象,设置超时时间是20秒,每隔0.5秒去检查一次,检查是否有ID==“kw”的元素出现。等待当前页面20秒,在20秒内每隔0.5秒就会去检查是否有ID==“kw”的元素出现,如果出现继续下一步,如果没有则在20秒捏继续等待,超过20秒就报错。 4.获取网页的title名称title=driver.titleprint(title)5.获取元素的文本信息a=driver.find_element_by_xpath('//*[@id="s-top-left"]/a').textif a=="新闻":    print("获取成功!")else:    print("获取失败!") fromselenium import webdriverdriver=webdriver.Chrome()driver.get("http://www.baidu.com")driver.maximize_window() 新开一个窗口win="window.open('http://www.jd.com')"    #js 脚本,新开一个窗口driver.execute_script(win)                #执行新开一个窗口的命令title=driver.title                        #获取当前页面的titleprint(title)handle=driver.current_window_handle   #获取当前页面的句柄print(handle) 第一种切换窗口的方式:all_handle=driver.window_handles         #获取当前页面所有的窗口句柄driver.switch_to.window(all_handle[-1])    #将句柄切换到所有句柄的最后一个句柄print(driver.title) 第二种切换窗口的方式:all_handle=driver.window_handlesfor i in all_handle:    if i !=handle:    #如果当前窗口不等于百度一下的句柄。 意味着i就是京东      driver.switch_to.window(i)   #切换到i的句柄,就是切换到京东的句柄      print(driver.title)          #打印当前的title,会得到京东页面的title from selenium importwebdriverfrom time importsleepdriver=webdriver.Chrome()driver.get("http://baidu.com")driver.maximize_window()driver.find_element_by_id("kw").send_keys("python")driver.find_element_by_id("su").click()sleep(2)driver .refresh() #刷新当前窗口sleep(2)driver.back()   #返回上一步sleep(2)driver.close()   #关闭当前窗口sleep(2)driver.quit()   #关闭所有窗口 fromselenium import webdriverfrom timeimport sleepfromselenium.webdriver.support.select import Selectdriver=webdriver.Chrome()driver.get("https://www.ctrip.com/")driver.maximize_window()s=driver.find_element_by_xpath('//*[@id="J_roomCountList"]')1.通过索引取值选择创建一个Select类的对象,将上面的元素定位作为属性给到对象。然后调用通过索引位取值的方式选择索引位为3的选项Select(s).select_by_index(3) 2.通过value取值选择Select(s).select_by_value("5") 3.通过文本信息取值选择:Select(s).select_by_visible_text("6间") iframe框的操作:from selenium importwebdriverdriver=webdriver.Chrome()driver.get("https://mail.163.com/") 第一种切换方式:通过元素定位切换iframe框iframe=driver.find_element_by_xpath('//*[@id="loginDiv"]/iframe')driver.switch_to.frame(iframe) 第二种切换iframe框的方式:用索引位进行切换driver.switch_to.frame(0) 第三种切换iframe框的方式:s=driver.find_elements_by_tag_name("iframe")#有多个ifram框就不能够使用这个方法 driver.find_element_by_name("email").send_keys("18699999999")driver.find_element_by_name("password").send_keys("qweqwe123")driver.find_element_by_id("dologin").click()driver.switch_to.default_content()          #退出ifram框 滑动滚动条:fromselenium import webdriverimport timedriver=webdriver.Chrome()driver.get("http://www.jd.com")driver.maximize_window()time.sleep(2)js="window.scrollTo(0,20000)"      #定义一个js脚本driver.execute_script(js)          #用driver调用execute_script方法执行js脚本for i inrange(0,20000,50):    js="window.scrollTo(0,%s)"%i    driver.execute_script(js)    time.sleep(0.1)time.sleep(2)js1="window.scrollTo(0,0)"driver.execute_script(js1) defrun_case():    suit=unittest.TestSuite()         #创建一个suit套件对象,相当于一个容器   suit.addTest(Test("test_01","test_02")) #将某一个类里面的某一个方法,装到这个容器里面   suit.addTests() #添加多条用例到套件中    return suit                      #谁调用这个函数,就得到这个容器if __name__ =='__main__':第一种运行方式unittest.main()    #执行框架内所有的用例 第二种运行方式:suit套件的方式runner=unittest.TextTestRunner()    #创建一个runner对象runner.run(run_case())            #用runner对象调用run方法来执行 from UI_auto importHTMLTestRunner3_New创建一个按照指定路径指定规则去查询py文件的对象start_dir=r"C:\Users\liujian\PycharmProjects\dcs\UI_auto"discover=unittest.defaultTestLoader.discover(start_dir=start_dir,pattern="lesson*.py")filename=r"C:\Users\liujian\PycharmProjects\dcs\UI_auto"+'\\cms_UIauto.html'f=open(filename,"wb")    # wb使用二进制的形式写入并且覆盖runner=HTMLTestRunner3_New.HTMLTestRunner(stream=f,                                          title="cmsui自动化测试",                                       description="用例执行情况如下:",                                       tester="小明")runner.run(discover)
页: [1]
查看完整版本: selenium常用的API和unittest单元测试框架