python - 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()
解决方案
您所追求的输入元素位于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")
推荐阅读
- java - 基于 Java 的 Ansible 保险库秘密解密解决方案
- c++ - 填充另一个二维数组后堆已损坏
- javascript - 在 OverlayTrigger react-bootstrap 组件中触发 onkeypress 事件
- javascript - 如何在水平垂直滚动时获得滚动值
- cluster-analysis - 如何在句子嵌入上应用聚类?
- mongodb - Apama 到 Mongo DB 连接
- c# - Xamarin.Forms 在列表中显示数据在调试但不在发布模式下工作
- c# - 在 VS C# 中定义 Tab 和 Enter 以像在 Python 3.7.x 中一样工作
- file - 如何获取文件的当前位置
- amazon-web-services - 如何在代码管道中整合您的 aws 凭证文件,因为我无法将其保存在 Github 存储库中