使用硒无法在iframe中找到元素

时间:2019-05-30 06:55:12

标签: python-3.x selenium

我正在尝试在iframe中定位元素,但是没有运气。

我认为由于我的代码无法切换到iframe,这就是为什么我无法在其中定位元素的原因。

下面是我的代码。

我尝试过

WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH, '/html/body/iframe')))
driver.find_element_by_name('applicant.name').send_keys('email')

我也尝试过

iframe = driver.find_element_by_xpath('/html/body/iframe')
driver.switch_to.frame(iframe)
driver.implicitly_wait(10)
driver.find_element_by_name('applicant.name').send_keys('email')

我尝试查找xpath,applicant.name的ID,但到目前为止没有任何效果。任何帮助或建议,将不胜感激。

此站点: https://www.indeed.com/cmp/Paratus-Partners-LLC/jobs/Full-Stack-Developer-7814e52be25090f3?from=iaBackPress&q=software%20developer&vjs=3

2 个答案:

答案 0 :(得分:0)

xpath /html/body/iframe

中包含一些元素

我一直在寻找applicant.name,它只是在单击假定按钮之后创建的。

我认为您必须检查iframe的xpath,也许这样可以起作用

"//iframe[contains(@src,'resumeapply')]"

答案 1 :(得分:0)

您要自动执行的页面中至少有 2 iframes

enter image description here

因此您需要

  1. 修改您的XPath Expression以唯一标识第一个iframe,例如:

    parentIframe = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH,"//iframe[contains(@id,'modal-iframe')]")))
    
  2. 切换到第一个iframe

    driver.switch_to.frame(parentIframe)
    
  3. 找到第二个iframe并切换到它

    childIframe =  WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH,"//iframe[contains(@src,'resumeapply')]")))
    driver.switch_to.frame(childIframe)       
    
  4. 完成后,您应该能够将文本发送到输入字段中。