把网站做成app,服装公司网站多少钱,江门企业免费建站,门户网站有哪些类型文章目录 1、执行driver webdriver.Chrome()后很久才打开浏览器2、浏览器多元素定位 $x(‘xpath语法’)3、打开浏览器driver.get(网址)执行了很久才开始定位元素#xff1a;等待#xff08;1#xff09;driver.set_page_load_timeout(t)#xff08;2#xff… 文章目录 1、执行driver webdriver.Chrome()后很久才打开浏览器2、浏览器多元素定位 $x(‘xpath语法’)3、打开浏览器driver.get(网址)执行了很久才开始定位元素等待1driver.set_page_load_timeout(t)2WebDriverWait() 4、异常处理处理异常 try/except断言assert 1、执行driver webdriver.Chrome()后很久才打开浏览器
尚未解决一会很快打开一会很慢打开
2、浏览器多元素定位 $x(‘xpath语法’)
console里面调试xpath 定位的语法是 $x() 在console里面通过 $x(‘xpath语法’) 可以确定 xpath 语法是否写正确方便报错时排查问题
# //*[idleftcolumn]/a[1]
# //*[idleftcolumn]/a[2]
# //*[idleftcolumn]/a[3]
# console里面调试xpath 定位的语法是 $x()
# 在console里面通过 $x(‘xpath语法’) 可以确定 xpath 语法是否写正确方便报错时排查问题
# $x(//*[idleftcolumn]/a) (74)3、打开浏览器driver.get(“网址”)执行了很久才开始定位元素等待
selenium元素操作等方法是需要等待页面所有元素完全加载完成后才开始执行的所以在页面未完成加载前代码会一直等待页面加载不继续执行。
1driver.set_page_load_timeout(t)
解决办法参考资料 【selenium】解决页面加载时间过长问题 解决 selenium 加载网页阻塞的问题
设置等待时间driver.set_page_load_timeout(0.1)超时即抛出异常try: except TimeoutException:超时后执行Javascript停止页面加载driver.execute_script(‘window.stop()’)
# 设置WebDriver的页面加载时间set_page_load_timeout,
# set_page_load_timeout(time) 方法可以设置页面的加载超时时间
# 在页面加载超出设置时间时会报错Timed out receiving message from renderer: time
driver.set_page_load_timeout(5) # 设置页面加载时间miao
PrintTime.NowTime(控制浏览器访问页面)
start time.time()
try:driver.get(https://www.runoob.com/html/html-tutorial.html) # 控制测览器访问
except TimeoutException:# 超时后执行Javascript停止页面加载PrintTime.NowTime(Time Out)driver.execute_script(window.stop())
# 显示等待WebDriverWait()
WebDriverWait(driver, 5, 0.1).until(lambda x: x.find_element_by_id(kw))
print(the page is loaded)
end time.time()
# 计算页面加载时间
print(end - start)
# 设置页面加载时间的方式只适用于使用 get() 方式打开网页如果是通过操作进行跳转的页面不适用2WebDriverWait()
解决办法参考资料 webdriver中的等待——主要讲解WebDriverWait()
- 显示等待WebDriverWait()
WebDriverWait(driver,timeout,poll_frequency0.5,ignored_exceptionsNone)driver浏览器驱动 timeout最长超时时间默认以秒为单位 poll_frequency检测的间隔步长默认为0.5s ignored_exceptions超时后的抛出的异常信息默认抛出NoSuchElementExeception异常。
- 与until()或者until_not()方法结合使用
WebDriverWait(driver,10).until(methodmessage)在设置时间10s内等待后面的条件发生。如果超过设置时间未发生则抛出异常。在等待期间每隔一定时间默认0.5秒)调用until或until_not里的方法直到它返回True或False.
- 匿名函数lambda
# lambda 形式参数 : 函数表达式
sum_1 lambda arg1, arg2: arg1 arg2
# lambda是一个表达式,可以被命名,其中arg1, arg2是形式参数,arg1 arg2 函数表达式
sum_1(1,2)
# 返回结果 3等待时间为10秒每0.5秒检查一次然后使用匿名函数等待直到找到id为’kw’的元素
# 设置等待
wait WebDriverWait(driver,10,0.5)
# 使用匿名函数
# lambda x: x2 表示一个接受参数x并返回x2的匿名函数
wait.until(lambda diver:driver.find_element_by_id(kw))4、异常处理
处理异常 try/except
try:runoob()
except AssertionError as error:print(error)
else:try:with open(file.log) as file:read_data file.read()except FileNotFoundError as fnf_error:print(fnf_error)
finally:print(这句话无论异常是否发生都会执行。)首先执行 try 子句在关键字 try 和关键字 except 之间的语句。如果没有异常发生忽略 except 子句try 子句执行后结束。如果在执行 try 子句的过程中发生了异常那么 try 子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符那么对应的 except 子句将被执行。如果一个异常没有与任何的 except 匹配那么这个异常将会传递给上层的 try 中。一个 try 语句可能包含多个except子句分别来处理不同的特定的异常。最多只有一个分支会被执行。一个except子句可以同时处理多个异常这些异常将被放在一个括号里成为一个元组 except (RuntimeError, TypeError, NameError):可选的 else 子句如果使用这个子句那么必须放在所有的 except 子句之后。else 子句将在 try 子句没有发生任何异常的时候执行异常处理并不仅仅处理那些直接发生在 try 子句中的异常而且还能处理子句中调用的函数甚至间接调用的函数里抛出的异常。try-finally 语句无论是否发生异常都将执行最后的代码。
断言assert
assert断言用于判断一个表达式在表达式条件为 false 的时候触发异常。断言可以在条件不满足程序运行的情况下直接返回错误而不必等待程序运行后出现崩溃的情况。 判断当前系统是否为 Linux如果不满足条件则直接触发异常不必执行接下来的代码
import sys
assert (linux in sys.platform), 该代码只能在 Linux 下执行# 接下来要执行的代码