Python Selenium 在里面找不到 ID Div
Python Selenium Can not find ID inside Div
所以我正在尝试使我的日常工作自动化以登录我的 ADP 网站,但似乎我从 selenium 中选择的任何功能都找不到我正在寻找的 ID,即“id= “login-form_username”。
下面是 Selenim Python 代码的一部分。
user_textbox=driver.find_element_by_id('login-form_username')
user_textbox.send_keys(user)
user_textbox.click()
user_confirm=driver.find_element_by_id("verifUseridBtn")
user_pass_textbox=driver.find_element_by_id("login-form_password")
user_signin=driver.find_element_by_id("signBtn")
user_signin.send_keys(Keys.RETURN)
另附上网站截图和我的 IDE 的错误。我不确定是否出于安全原因,我尝试访问的网站不允许此类操作。
谢谢
乔尔
由于您没有分享页面 link 而不是您看到的错误,我们只能猜测您的代码出了什么问题。
所以可以是:
- 您在访问该元素之前缺少等待/延迟。
在这种情况下,这样的事情应该可以解决您的问题:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome(executable_path='chromedriver.exe')
wait = WebDriverWait(driver, 20)
driver.get("https://your_site_url/")
user_textbox = wait.until(EC.visibility_of_element_located((By.ID, "login-form_username")))
user_textbox.send_keys(user)
user_textbox.click()
或者,您可以在定位元素之前简单地添加延迟,如下所示:
time.sleep(5)
user_textbox=driver.find_element_by_id('login-form_username')
user_textbox.send_keys(user)
user_textbox.click()
time.sleep(5)
user_confirm=driver.find_element_by_id("verifUseridBtn")
user_pass_textbox=driver.find_element_by_id("login-form_password")
time.sleep(5)
user_signin=driver.find_element_by_id("signBtn")
user_signin.send_keys(Keys.RETURN)
但这不是最好的方法。
2) 也许那里有一个 iframe。
在这种情况下,您必须切换到该 iframe。
3) 也许您没有将网络驱动程序设置为足够大 - 如果是这样,请这样做。
4) 可能您必须将该输入元素滚动到视图中?
下面是 Selenim Python 代码的一部分。
user_textbox=driver.find_element_by_id('login-form_username')
user_textbox.send_keys(user)
user_textbox.click()
user_confirm=driver.find_element_by_id("verifUseridBtn")
user_pass_textbox=driver.find_element_by_id("login-form_password")
user_signin=driver.find_element_by_id("signBtn")
user_signin.send_keys(Keys.RETURN)
另附上网站截图和我的 IDE 的错误。我不确定是否出于安全原因,我尝试访问的网站不允许此类操作。
谢谢
乔尔
由于您没有分享页面 link 而不是您看到的错误,我们只能猜测您的代码出了什么问题。
所以可以是:
- 您在访问该元素之前缺少等待/延迟。
在这种情况下,这样的事情应该可以解决您的问题:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome(executable_path='chromedriver.exe')
wait = WebDriverWait(driver, 20)
driver.get("https://your_site_url/")
user_textbox = wait.until(EC.visibility_of_element_located((By.ID, "login-form_username")))
user_textbox.send_keys(user)
user_textbox.click()
或者,您可以在定位元素之前简单地添加延迟,如下所示:
time.sleep(5)
user_textbox=driver.find_element_by_id('login-form_username')
user_textbox.send_keys(user)
user_textbox.click()
time.sleep(5)
user_confirm=driver.find_element_by_id("verifUseridBtn")
user_pass_textbox=driver.find_element_by_id("login-form_password")
time.sleep(5)
user_signin=driver.find_element_by_id("signBtn")
user_signin.send_keys(Keys.RETURN)
但这不是最好的方法。
2) 也许那里有一个 iframe。
在这种情况下,您必须切换到该 iframe。
3) 也许您没有将网络驱动程序设置为足够大 - 如果是这样,请这样做。
4) 可能您必须将该输入元素滚动到视图中?