当前位置: 首页 > news >正文

盐城市建设局网站打不开推广软件赚钱的平台

盐城市建设局网站打不开,推广软件赚钱的平台,网站的策划与建设阶段,揭阳网站制作找哪家在ui自动化测试中,几乎出现问题最多的情况就是定位不到元素 ,当你的自动化在运行过程中 ,突然发现报错走不下去了 。很大概率就是因为找不到元素 ,而找不到元素的一个主要原因就是页面加载慢 ,代码运行速度快导致 。 …

在ui自动化测试中,几乎出现问题最多的情况就是定位不到元素 ,当你的自动化在运行过程中 ,突然发现报错走不下去了 。很大概率就是因为找不到元素 ,而找不到元素的一个主要原因就是页面加载慢 ,代码运行速度快导致 。

遇到以上的问题 ,该怎么办呢 ?其中一个解决方案就是加等待时间 。

1.元素等待介绍

1.什么是元素等待 ? 在运行web自动化的过程中,有两个运行速度 。 一个就是代码的运行速度 ,一个是浏览器的渲染速度 。

代码的运行速度很快 ,基本都是保持在毫秒级甚至以下 ,通过人眼的观察你可能都看不到的运行过程就已经结束了 ;而浏览器的渲染速度较慢 ,一般保持在毫秒到秒级别 ,再加上网络时间和网站的一些性能问题 ,这个速度就更慢 。

而在web自动化中 ,这两个速度的关联就是代码运行驱动浏览器的运行 ,代码运行速度快 ,有时候浏览器渲染速度跟不上 ,就会导致找不到元素的情况 。解决的办法就是让代码的运行速度慢一些 ,在执行过程中等待一会或者检查下浏览器的元素出来没有 ,如果出来了则再运行 ,这就是元素等待的本质 。

2.三种等待方式

在web自动化中 ,可以使用以下三种等待方式 ,分别是强制等待 、隐式等待 、显示等待 。

2.1 强制等待

所谓的强制等待 ,就是通过python time模块中的sleep方法 ,让代码在某个地方暂停n秒 。放在自动化中 ,就是让代码的运行暂时先停下来 ,让浏览器的渲染速度更上代码的允许速度 。

# 导包 :import time
# 等待5s : time.sleep(5)

在这里就存在这个问题 ,web自动化代码那么多 ,我应该把这种强制等待放在哪里呢 ?具体的说放在那一行代码呢 ?这个问题的答案跟我们的系统有关系 ,一般编写好代码以后 ,我们都会进行调试运行 ,在调试运行的过程中 ,你会发现某个页面的加载速度比较长 ,页面元素多 ,那么进入这个页面以后往往就需要加等待时间 ,对应代码的位置就是加载这个页面的下一行就是等待时间的代码 。

那么 ,当出现一个加载慢的页面时 ,应设置几秒的等待时间呢 ?3s还是5s ? 这就需要我们多次运行以观察在该页面一般需要几秒加载出来 ,一般设置的等待时间会比这个长个1~2s .大白话就是我们需要根据观察得出一个等待时间 ,这个时间往往都是我们主观判断得出 的,经常会出现等待时间不够或者等待时间过长的情况 。

  • 它的优点是:在一些不稳定的页面、复杂的页面 ,使用强制等待是比较好的,反正就等那么长时间 。

  • 它的缺点是:因为时间往往是根据我们的经验值设置 ,难免会出现等待时间长的情况 ,这样就降低了自动化的执行效率 。其实很多情况下页面元素早已出现 ,而我们设置的等待时间还没有到 ,它还在那傻傻的等 ,直到时间到了它才会继续运行 。

2.2 隐式等待

什么是隐式等待 ?隐式等待是对页面中的所有元素进行等待 ,它也需要设置一个等待时间,在等待的时间内,当页面所有元素都加载出来后就往下执行了 ,即便时间没到也会继续往下执行 。所以 ,它的等待结束时间是页面所有元素都加载完,而不是它设置的等待时间 。当然 ,这里面还有一种情况就是等待时间已用完,但是页面元素还没有都加载出来 ,这时就会抛出异常 。

比如我一个页面有200个页面对象 ,有输入框、有按钮、有链接、有图标等 。使用隐式等待就是在规定的时间内,若这200个页面对象都加载出来了,就继续往下执行 ,否则到了规定时间还有元素没加载完就会报错 。

# 隐式等待
driver.implicitly_wait(5)		# 等待5s .

这是webDriver里的一个方法 ,可使用浏览器对象直接调用 。

  • 它的优点是:相比time.sleep()而言 ,它更加智能 ,不需要必须等到所有时间用完才往下执行 。也许你设置了5s ,但是当到了3s时页面元素都已加载出来 ,这个时候它就会继续往下执行了 ,这样就能提高执行效率 。

  • 它的缺点是 :它的这种等待方式不太合理 ,很多情况下 ,我们定位的是具体的某个元素 ,也就是说我们等待的是一个元素 ,而它现在是等待这个页面的所有元素 。即便我们要等到元素早以出现 ,但是它还是要把所有元素都加载完才会继续运行 。所以,从效率上还是优化空间的 。

2.3 显式等待

什么是显式等待 ?显式等待就是针对某个特定的元素设置等待时间 ,它就等待一个元素 ,元素出现则往下运行 ,元素没出现,则继续等待,直到等到到超出规定的等待时间 ,这时也会抛出NoSuchElementException异常 。

还是以上面的例子说明 ,比如一个页面有200个对象 ,有输入框、有按钮、有链接、有图标等 。但是我在代码中设置就等待其中的一个操作按钮 ,使用显式等待后,它就会等待这一个操作按钮 ,如果这个按钮的元素已经加载出来,即便其它元素仍没有加载出来 ,它也不管 ,则会继续往下运行。

# 1.导包 : from selenium.webdriver.support.wait import WebDriverWait
# 2.使用类:WebDriverWait(driver,timeout,poll_frequency=0.5)driver : 浏览器驱动对象timeout : 超时的时长 ,单位 :秒poll_frequency : 检测间隔时间 ,默认为0.5s
# 3)调用它的方法 :until(method) ,直到 ... 时 ,此方法返回的布尔值。method : 函数名称,该函数实现的是对元素的定位 。一般使用匿名函数来实现 :#显式等待的完整代码如下:
WebDriverWait(driver,10,0.5).until(lambda driver:driver.find_element_by_id("username"))
  • 它的优点是:只等待一个元素 ,等待到即可继续运行 ,花费时间最少 ,执行效率也高 ,所以一般都会用此方法,并且会将它封装成一个公共方法 。

三种方法总结 :

  • 显式等待 :等待页面中的一个元素 ,等待到即可继续运行,时间到还没有等待到即报错

  • 隐式等待 : 等待页面中的所有元素 ,所有元素加载完即可继续运行 ,时间到还没有加载完的即报错 。

  • 强制等待 : 按时间等待 ,无论页面元素是否加载完毕 ,它都会继续运行 。

3.具体案例

需求:通过selenium完成对tpshop的登录操作,具体如下 :

  1. 点击首页登录 ,使用显式等待8s .

  2. 输入用户名 ,输入密码 ,输入验证 。

  3. 使用逻辑与属性定位用户名输入框,并输入账号,如13988888888

  4. 点击登录 ,使用隐藏等待 ,等待时间8s .

  5. 进入首页 ,点击安全退出按钮 ,使用强制等待2s .

  6. 关闭浏览器

# 定位tpshop登录
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.wait import WebDriverWait# 1. 创建浏览器对象
driver = webdriver.Chrome()
driver.maximize_window()# 2. 输入地址
driver.get("http://localhost")# 3. 元素定位
# 3.1 点击登录 : link_text
driver.find_element_by_link_text("登录").click()# 定位输入框 :显式等待8s .
WebDriverWait(driver,8,0.5).until(lambda driver:driver.find_element_by_id("username"))# 3.2 输入用户名
driver.find_element_by_id("username").send_keys("13088888888")# 3.3 输入密码
driver.find_element_by_name("password").send_keys("123456")# 3.4 输入验证码
driver.find_element_by_id("verify_code").send_keys("8888")# 4. 点击登录
driver.find_element_by_class_name("J-login-submit").click()driver.implicitly_wait(8)      # 隐式等待# 点击安全退出按钮 
driver.find_element_by_link_text("安全退出").click()
sleep(2)		# 强制等待2s driver.quit()

 

http://www.hkea.cn/news/338123/

相关文章:

  • 做一个能注册用户的网站网络推广费用大概价格
  • 网站建设评价东莞谷歌推广
  • php网站后台进不去百度推广入口官网
  • 个人网站一键生成免费推广网站有哪些
  • 厦门做网站设计电商seo优化
  • wordpress视频点播seo技术是干什么的
  • 网站推广是怎么做的网络营销专业如何
  • 平面设计线上兼职上海网站seo
  • 个性化网站定制价格今日热点
  • 做网站的艰辛免费个人网站申请
  • 网站改版需要多久网站设计与制作毕业论文范文
  • 深圳横岗网站建设网站建设的推广渠道
  • 有没有什么网站免费做名片2023年新闻小学生摘抄
  • 新网金商网站外链查询工具
  • 网站建设的进度竞价托管选择微竞价
  • 网站快速网站推广怎么做一个公司网站
  • 旅游网站模板htmlseo品牌优化整站优化
  • 方圆网站建设aso优化重要吗
  • 做购实惠网站的意义好用的搜索引擎有哪些
  • 怎么把自己笔记本做服务器做个网站搭建网站基本步骤
  • jeecms做企业网站成都网站建设公司排名
  • 沈阳招聘网站开发地推项目平台
  • 798艺术区成都seo达人
  • 平度网站建设抖音代运营收费详细价格
  • 株洲网站优化找哪家seo优化的价格
  • 找印度人做网站sem竞价推广公司
  • 山西网站推广公司网站关键词优化怎么弄
  • 微信分销是什么重庆优化seo
  • 武汉企业网站推广方案永久免费无代码开发平台网站
  • 网站开发岗位群怎样推广产品