selenium 元素定位 增加超时timeout设置

我就奇怪怎么分割线以下那段代码时灵时不灵,原来是我自己修改的时候,思路弄错了。
涉及到try-return-except结构中的一些功能效果。
废话不多说,先上修改后的代码:

def safe_get_element(driver,by,element_num,timeout=2):
	"""
	传参时:
	1,driver参数为浏览器驱动所在变量名,下方return部份不需要修改。
	
	2,by参数和element_num参数参照driver.find_element("","")的写法,简略版如下,详细版请参照https://blog.csdn.net/qq_32897143/article/details/80383502
	2.1,by_id                -> find_element("id","")
	2.2,by_xpath          -> find_element("xpath","")
	2.3,by_link_text      -> find_element("link text","")
	2.4,by_partial_text  -> find_element("partial link text","")
	2.5,by_name          -> find_element("name","")
	2.6,by_tag_name    -> find_element("tag name","")
	2.7,by_class_name  -> find_element("class name","")
	2.8,by_css_selector -> find_element("css selector","")
	感谢CSDN博客ID为“我的猪很厉害的”的相关分享。
	
	3,timeout参数默认为5,以秒为单位
	
	4,将会返回一个元素,
	4.1,后续操作与driver.find_element("id","kw").send_keys('python')等一样,
	4.2,参考:safe_get_element(driver=amzjp,by='id',element_num='drrGenerateReportButton').click()
	"""
	import time
	start_time = time.time()
	print('开始时间为:{0:F}'.format(start_time))
	while True:
		try:
			print('开始定位元素,当前时间为:{0:F}'.format(time.time()))
			element_result=driver.find_element(by,element_num)
			return element_result
		except:
			if time.time() - start_time >= timeout:
				print('定位元素超时,当前时间为:{0:F}'.format(time.time()))
				return False
			else:
				time.sleep(0.2)
				print('正在定位元素,当前时间为:{0:F}'.format(time.time()))



def safe_get_elements(driver,by,element_num,timeout=2):
	"""
	该自定义函数会返回一个由元素组成的列表,寻找所需要的元素时,请参照列表的方式取出元素。
	传参时&
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值