一、报错现象:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"link text","selector":"升级备份"}
![](https://i-blog.csdnimg.cn/blog_migrate/35b33656ebc987dd8bda398ee4315571.png)
二、可能原因如下:
1、确定定位该元素是否正确,可以换种方式定位改元素,具体方法可以参考本人另一篇博客Python3+selenium自动化元素定位方法及举列
2、浏览器打开后没有找不到元素程序就会自动执行下一步,建议在找该元素之前前加上等待时间time.sleep(3)
3. 确定目标网址中是否包含iframe,若有iframe,需要定位iframe(打开浏览器开发者工具模式,按Ctrl+h 然后搜索iframe)根据具体情况填写switch_to.frame()
driver.switch_to.frame(0)
![](https://i-blog.csdnimg.cn/blog_migrate/3cf342b1106b75764af4bcb716736c08.png)
三、使用举例:
绿盟设备包含iframe
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
# 忽略证书告警
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors') # 忽略证书告警
options.add_argument('--no-sandbox') # root 权限
options.add_argument('--disable-dev-shm-usage') # 关闭开发者模式
# options.add_argument('--headless') # 无图像化界面:"
# options.add_argument('blink-settings=imagesEnabled=false') # 不加载图片
options.add_argument('--disable-gpu') # 关闭GPU
# 启动浏览器
driver = webdriver.Chrome(options=options)
# 登陆绿盟防火墙web控制台
driver.get('https://192.168.200.1:8443/user/requireLogin')
# 等待账号密码输入框加载完毕
WebDriverWait(driver, 10).until(
expected_conditions.presence_of_element_located((By.CSS_SELECTOR, '#username')))
# 输入账号密码
driver.find_element(by=By.CSS_SELECTOR, value='#username').send_keys('weboper')
driver.find_element(by=By.CSS_SELECTOR, value='#password').send_keys('admin@123')
# 点击登陆按钮
driver.find_element(by=By.CSS_SELECTOR, value='#login.submit').click()
time.sleep(20)
# 备份配置
driver.find_element(By.CSS_SELECTOR, "#menutitle2 > span").click()
driver.find_element(By.ID, "two21").click()
driver.switch_to.frame(0) #包含iframe
driver.switch_to.frame(0) #包含iframe
driver.find_element(By.CSS_SELECTOR, ".cmn_btn").click()
time.sleep(100)
# 关闭浏览器
driver.quit()