我就奇怪怎么分割线以下那段代码时灵时不灵,原来是我自己修改的时候,思路弄错了。
涉及到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):
"""
该自定义函数会返回一个由元素组成的列表,寻找所需要的元素时,请参照列表的方式取出元素。
传参时&