繁体   English   中英

Python selenium 找不到点击按钮

[英]Python selenium can not find the click button

我正在尝试使用此代码单击 javascript 按钮。 在第一帧中,您可以找到内容,但是当我将自己置于第二个 html 中时,没有菜单。

我如何点击按钮?

在此处输入图片说明

代码试验:

driver.switch_to.default_content()
driver.find_element_by_tag_name('frameset')
driver.switch_to_frame(1)
driver.find_element_by_tag_name('html')

print(driver.page_source)

driver.find_element_by_tag_name('frameset')
driver.switch_to_frame(1)
driver.find_element_by_tag_name('html')    

print(driver.page_source)

 <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> </head><frameset cols="170px,100%" framespacing="0" border="0" frameborder="0"> <frame scrolling="no" name="menu" id="menu" src="menu.jsp" /> <frame scrolling="yes" name="main" id="main" src="main.jsp" /> </frameset>

由于所需元素位于多个<iframe>因此您必须:

  • Induce WebDriverWait框架可用并切换到它
  • 诱导WebDriverWait等待子框架可用并切换到它
  • Induce WebDriverWait使所需元素可点击
  • 您可以使用以下解决方案:

    • 代码块:

       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 WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//frame[contains(@src, 'login')]"))) WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//frame[@id='menu' and @name='menu'][contains(@src, 'menu')]"))) WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, "squeda Avanzada"))).click()

在这里你可以找到关于Ways to deal with #document under iframe的相关讨论

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM