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]