Selenium 使用 css、xpath、name、id (python) 找不到任何元素

Posted

技术标签:

【中文标题】Selenium 使用 css、xpath、name、id (python) 找不到任何元素【英文标题】:Selenium can not find any element using css, xpath, name, id (python) 【发布时间】:2022-01-07 21:10:44 【问题描述】:

我想登录一个论坛,已经通过切换到其 iframe 绕过了 cookie 消息,但我无法访问页面上的任何内容。这是我的代码:

#set path, open firefox
path = r'C:\Users\Anwender\Downloads\geckodriver-v0.30.0-win64\geckodriver.exe'
driver = webdriver.Firefox(executable_path=path)

#open bym forum
driver.get('https://www.bym.de/forum/')
driver.maximize_window()

#deal with cookie
wait = WebDriverWait(driver,20)
wait.until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[title='SP   Consent Message']")))
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,"button[title='Zustimmen']"))).click()
driver.implicitly_wait(30)

到目前为止,一切都很好。现在大量的广告弹出。我尝试登录:

username = driver.find_element_by_id('navbar_username')
username.send_keys("name")
password = driver.find_element_by_id('navbar_password')
password.send_keys("pw")
driver.find_element_by_xpath("/html/body/div[1]/div[2]/main/div[3]/div[1]/ul/li[2]/form/fieldset/div/div/input[4]").click()

我已经使用 css 选择器或 xpath 尝试了不同的变体。没用。然后我尝试等待 20 秒,直到所有内容都加载完毕。没用。我尝试访问不同的元素(到子论坛)。没用。 我试过了:

try:
    wait.until(
            EC.presence_of_element_located((By.ID, "navbar_username"))
                )
finally:
    driver.quit()

Selenium 只是找不到这个元素,浏览器刚刚关闭。我一直在寻找 iframe,但在 html 中找不到任何内容。有没有可能我什至不在主“窗口”上? “框架”? “地点”?我不知道该怎么称呼它。

任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

您切换到 iframe 并将其关闭,但您从未切换回来! Selenium 仍然在封闭且不存在的 iframe 上。使用以下命令切换回主页:

driver.switch_to.default_content()

【讨论】:

以上是关于Selenium 使用 css、xpath、name、id (python) 找不到任何元素的主要内容,如果未能解决你的问题,请参考以下文章

Selenium 使用 css、xpath、name、id (python) 找不到任何元素

selenium使用Xpath+CSS+JavaScript+jQuery的定位方法(治疗selenium各种定位不到,点击不了的并发症)

Selenium xpath all (//*) 不会占用所有 css 元素

selenium使用Xpath定位之完整篇

如何使用 Xpath、css 或 Selenium 中的任何其他定位器在 html 中的结束标记后查找带有“== $0”的元素

Selenium2+python自动化9-CSS定位语法