html - Selenium -- 试图访问某些字段
问题描述
我正在尝试访问这个简单页面stepik中的登录名和密码字段。
我尝试了不同的方法:
from selenium import webdriver
options = webdriver.ChromeOptions()
binary_yandex_driver_file = './initializer/yandexdriver.exe' # path to YandexDriver
driver = webdriver.Chrome(binary_yandex_driver_file, options=options)
driver.get('https://stepik.org/login')
按名称查找元素:
id_box = driver.find_element_by_name("login")
按 id 查找元素:
id_box = driver.find_element_by_id("id_login_email")
通过 XPath 和完整 XPath 查找元素:
id_box = driver.find_element_by_xpath(("//*[@id='id_login_email']")).click()
id_box = driver.find_element_by_xpath("/html/body/div/div[1]/div[2]/main/div/div/div/div/div[1]/div/div/div/form/div[1]/input[1]").click()
在所有情况下,我都得到了类似的东西:
Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="login"]"}
任何帮助将非常感激。
解决方案
使用显式等待。问题发生在您的情况下,因为页面未完全加载并且您正在尝试找到您的字段。
这是工作代码:
from selenium import webdriver
from selenium.webdriver.support import ui
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://stepik.org/login")
id_box = ui.WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "id_login_email")))
我希望它对你有帮助!
推荐阅读
- javascript - 以角度保存和获取firebase不起作用
- c++ - 通过函数参数确定结构成员
- swift - 如何在 macOS 中使用 iosMath 数学库?
- node.js - 当我从nodejs发送它时,有什么方法可以隐藏来自浏览器的获取请求响应?
- heap-memory - 堆和栈内存划分的主要来源是什么?
- box2d - 如何在 LOVE2D 中设置车轮关节
- ios - 如何让 UIDatePicker 在 Swift 4 中更新文本字段和数据库
- math - 朝着圆上的特定角度迭代
- django - 如何在所有页面上获取 django 分页唯一项目 ID?
- pip - pip install apache-airflow 然后气流 initdb 在新的虚拟环境中:SyntaxError