python-3.x - 在硒中找不到元素
问题描述
我正在尝试使用 Selenium WebDriver 在网站上输入 ID 和密码,但我的代码不起作用。似乎找不到元素。
我检查了 HTML 代码并找到了值。
这是我的 Python 代码
from selenium import webdriver
driver=webdriver.Chrome('C:\Chrome_Driver\chromedriver.exe')
driver.get('http://hisnet.handong.edu/')
sleep(0.5)
driver.find_element_by_name('id').send_keys('ㅁ')
sleep(0.5)
driver.find_element_by_name('password').send_keys('ㅁ')
这是HTML代码
input type="text" style="color:#000000; height: 16px; width:138px;ime-mode:inactive" name="id" autocomplete="off" tabindex="1" placeholder="아이디를 입력하십시오." value=""
解决方案
有嵌套框架协商
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 as EC
url = 'http://hisnet.handong.edu/'
driver = webdriver.Chrome()
driver.get(url)
driver.switch_to.frame(driver.find_element_by_css_selector("[name=MainFrame]"))
driver.switch_to.frame(driver.find_element_by_css_selector("[name=MainFrame]"))
driver.find_element_by_css_selector("[name=id").send_keys("banana")
driver.find_element_by_css_selector("[type=password]").send_keys("orange")
您可以对帧使用等待条件:
WebDriverWait(driver, 5).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"[type=password]")))
推荐阅读
- machine-learning - 使用交叉验证调整超参数和评估
- kotlin - 在 TeamCity Kotlin DSL 中定义 DockerSupportFeature 时如何访问 dockerRegistryId
- python - Sum 存储在字典中的 DF 列
- r - 从列表中提取 data.frame 的循环
- pine-script - 您如何将当天第一根蜡烛的开盘/高/低/收盘值用作 pine 脚本中的变量?
- kubernetes - 谷歌云平台Master无法升级到“1.15.9-gke.24”
- javascript - 如何在客户端反应应用程序中丑化 JS/HTML/CSS?
- java - ReactorDebugAgent 适合生产吗?
- javascript - 为什么这个 onSubmit 不调用它的函数?
- python-3.x - 针对特定因素的 Pandas 'get_dummies'