首页 > 解决方案 > Selenium python返回带有__VIEWSTATE的html

问题描述

Selenium python 返回带有 __VIEWSTATE 的 html。

我正在尝试用 selenium 打开一个页面并执行提交。但是,输入 id 有另一个名称。

这是硒的限制还是页面上的东西?

这是页面。 http://www8.receita.fazenda.gov.br/SimplesNacional/aplicacoes.aspx?id=21

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

driver = webdriver.Remote(command_executor='http://localhost:4444/wd/hub',
         desired_capabilities=DesiredCapabilities.CHROME)

driver.get("http://www8.receita.fazenda.gov.br/SimplesNacional/aplicacoes.aspx?id=22")

#driver.find_element_by_id("Cnpj").send_keys("99999999999")
#inputElement.send_keys('99999999999')

print(driver.page_source)

driver.quit()

在此处输入图像描述

标签: pythonseleniumselenium-webdriverselenium-chromedriver

解决方案


您所追求的输入元素位于iframe. 您需要先切换iframe才能访问输入元素。

诱导WebDriverWait() 并等待frame_to_be_available_and_switch_to_it()

诱导WebDriverWait() 并等待element_to_be_clickable()

代码

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver=webdriver.Chrome()
driver.get("http://www8.receita.fazenda.gov.br/SimplesNacional/aplicacoes.aspx?id=21")
WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"frame")))
WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.ID,'Cnpj'))).send_keys("99999999999")

浏览器快照 在此处输入图像描述


推荐阅读