首页 > 解决方案 > 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"]"}

任何帮助将非常感激。

标签: htmlcsspython-3.xselenium

解决方案


使用显式等待。问题发生在您的情况下,因为页面未完全加载并且您正在尝试找到您的字段。

这是工作代码:

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")))

我希望它对你有帮助!


推荐阅读