Javascript Can';无法通过id、名称或链接文本或WebDriverWait()在selenium中找到元素。每次都不会引发这样的错误异常

Javascript Can';无法通过id、名称或链接文本或WebDriverWait()在selenium中找到元素。每次都不会引发这样的错误异常,javascript,python,selenium,selenium-webdriver,Javascript,Python,Selenium,Selenium Webdriver,我试过这个: 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

我试过这个:

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()
username = input("Username: ")
password = input("Password: ")

username_box = driver.find_element_by_name("j_username")
username_box.send_keys(username)

password_box = driver.find_element_by_name("j_password")
password_box.send_keys(password)
password_box.send_keys(Keys.RETURN) # Now, we are at the page in question after signing on.
使用按链接文本查找元素、按部分链接文本查找元素、按id查找元素、按名称查找元素以及此处文档中列出的其他一些选项()。所有这些都“没有这样的因素”

接下来,我尝试使用WebDriverWait。这会不断抛出“超时异常”

当前理论:

1它与受保护的登录有关。这是一个非常奇怪的网站,一点也不直观,一个又一个的元素数不清

2它与周围的其他元素有关。如果需要的话,我一定会上传这些内容,这只是一个巨大的html块,所以我想暂时让问题尽可能简洁

3我曾考虑过在href操作中使用driver.get(),但这只会重新加载网页。所以这也不起作用

我解决了这个问题 通过以下方式切换到适当的iFrame:

to_shopping_cart = driver.find_element_by_link_text("Enrollment Shopping Cart")

您是否尝试过通过元素的
xpath
捕获元素?Xpath似乎通常对我很有效

要轻松找到xpath,而不是自己输入xpath,您可以通过Chrome进入网站,右键单击您想要xpath的元素,选择inspect元素,页面html的侧栏将弹出。
在侧边栏中,应该有一条以灰色突出显示的线。这是html中指向元素的那一行,如果您将鼠标移到这一行上,您应该会看到您的元素高亮显示。右键单击该行并选择copy xpath,您应该拥有您的xpath。将此输入到您的代码中:

proper_frame_element = driver.find_element_by_name('TargetContent')
driver.switch_to_frame(proper_frame_element)

确保xpath包含引号(字符串),并且要发送的用户名和密码键也是字符串

根据注释中给出的信息,所需元素位于iframe内。这意味着您需要在进行搜索之前切换到iframe:

然后,如果需要切换到默认内容,请使用:

driver.switch_to.frame("frame name or id")
to_shopping_cart = driver.find_element_by_link_text("Enrollment Shopping Cart")

页面上有iframe元素吗?是的,页面上有3个元素,页面上的几个js脚本中有“iframe”。我试图访问的元素位于一个iframe中,有很多级别。
driver.find_element_by_xpath("xpath_of_element_you_want").sendkeys("your_username")
driver.switch_to.frame("frame name or id")
to_shopping_cart = driver.find_element_by_link_text("Enrollment Shopping Cart")
driver.switch_to.default_content()