无法在页面中找到元素,检查元素显示与源页面不同的HTML Python - Selenium

oiopk7p5  于 2023-06-27  发布在  Python
关注(0)|答案(3)|浏览(134)

我在找页面上的一个元素。如果我检查元素,我可以看到HTML代码和元素id = username,但当我查看页面源代码时,只有Javascript代码。有什么办法可以看到HTML页面吗?
这是一个页面:https://pje.tjmg.jus.br/pje/login.seam
这是我的代码:

username_input = WebDriverWait(driver, 60).until(EC.element_to_be_clickable((By.ID, 'username')))
username_input.clear()
username_input.send_keys(cpf)
wj8zmpe1

wj8zmpe11#

driver.get("https://pje.tjmg.jus.br/pje/login.seam")
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe#ssoFrame")))
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#username"))).send_keys("MPenner")
  • 使用 XPATH
driver.get("https://pje.tjmg.jus.br/pje/login.seam")
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@id='ssoFrame']")))
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='username']"))).send_keys("MPenner")

*注意:需要添加以下导入:

from selenium.webdriver.support.ui import WebDriverWait
 from selenium.webdriver.common.by import By
 from selenium.webdriver.support import expected_conditions as EC
  • 浏览器快照:

参考

您可以在以下内容中找到一些相关讨论:

  • 通过Selenium和python切换到iframe
  • selenium.common.exceptions.NoSuchElementException:Message:no such element:尝试使用selenium单击“下一步”按钮时无法定位元素
  • Python中的selenium:NoSuchElementException:Message:no such element:无法定位元素
alen0pnh

alen0pnh2#

它在一个iframe里。

<iframe id="ssoFrame" name="ssoFrame" class="sso-frame" src="https://pje.tjmg.jus.br/pje/authenticateSSO.seam"></iframe>

尝试在iframe中的页面:https://pje.tjmg.jus.br/pje/authenticateSSO.seam

2cmtqfgy

2cmtqfgy3#

所需的元素(@id=username)被 Package 在iframe中。您首先需要切换到iframe,然后执行任何操作。

参考以下工作代码:

import time

from selenium import webdriver
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()
driver.maximize_window()

driver.get("https://pje.tjmg.jus.br/pje/login.seam")
wait= WebDriverWait(driver,30)
wait.until(EC.frame_to_be_available_and_switch_to_it((By.NAME,"ssoFrame")))
username_input = wait.until(EC.element_to_be_clickable((By.ID, 'username')))
username_input.clear()
username_input.send_keys("text")
time.sleep(30)

结果:

**切换回默认内容:**要退出iframe,请使用以下代码。

driver.switch_to.default_content()

相关问题