通过遍历的方式 暴力识别iframe
ps:需要自己定义driver,log
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
def iframe( loc):
"""
识别iframe中包含的元素 来确定对应的iframe
作用于无固定属性值的iframe
:loc:iframe中存在的元素
:return:
"""
try:
i = 0
while i < 10:
driver.switch_to.frame(int(i))
i = i + 1
# 判断元素是否存在 存在输出true 不存在输出false
try:
WebDriverWait(driver, 5, 1).until(EC.visibility_of_all_elements_located(loc))
b = True
except:
b = False
# 元素存在就退出循环 元素不存在就退出当前iframe
if b:
log.info(f"选择第{i}个iframe")
break
else:
driver.switch_to.default_content() # 退出当前iframe
except Exception as e:
print(e)
def iframe2( loc):
"""
识别iframe中包含的元素 来确定对应的iframe ai优化
作用于无固定属性值的iframe
:loc:iframe中存在的元素
:return:
"""
for i in range(10):
try:
driver.switch_to.frame(i) # 选择iframe
WebDriverWait(driver, 5, 1).until(EC.visibility_of_all_elements_located(loc)) # 判断元素是否存在
log.info(f"选择第{i}个iframe")
break
except:
driver.switch_to.default_content() # 退出当前iframe
else:
print('无法找到对应的iframe')