【问题标题】:How do I interact with this iframe in selenium我如何在 selenium 中与这个 iframe 交互
【发布时间】:2015-10-14 06:34:48
【问题描述】:
textbox = driver.find_element_by_id('applicant.name')

没用。

不幸的是,我已经尝试了检查元素的所有变体,复制 xpath,尝试识别文本框的类名等。

我希望能够将一些文本发送到 Indeed-apply-widget here 中的输入字段。

如果您点击“立即申请”(很遗憾我无法链接它),您会看到输入包含在 2 个 iframe 中。

有没有简单的方法可以访问它们?
到目前为止,这是我所拥有的:

from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://ca.indeed.com/cmp/Clearview-Plumbing-&-Heating/jobs/HVAC-Installer-Opening-6183dce44a9bfe10?sjdu=vQIlM60yK_PwYat7ToXhk42rccfWGklJDtD_zDpWBzDCfUEiSP2Zk-zLpFc6GNuF8wyV4_UaMyNFtpjETvX0fCpQXc3PxTbrGkwAMNkR5vGMtAfe9wNpTncItNgAIJHx' )
driver.find_element_by_class_name("indeed-apply-widget").click()
    # move into the iframe

iframe = driver.find_elements_by_tag_name('iframe')[0]
driver.switch_to_frame(iframe)

更新的代码(仍然无法与 iframe 交互)

from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://ca.indeed.com/cmp/Clearview-Plumbing-&-Heating/jobs/HVAC-Installer-Opening-6183dce44a9bfe10?sjdu=vQIlM60yK_PwYat7ToXhk42rccfWGklJDtD_zDpWBzDCfUEiSP2Zk-zLpFc6GNuF8wyV4_UaMyNFtpjETvX0fCpQXc3PxTbrGkwAMNkR5vGMtAfe9wNpTncItNgAIJHx' )
driver.find_element_by_class_name("indeed-apply-widget").click()
    # move into the iframe
path = driver.find_element_by_xpath("/html/body/div[5]/div/div[2]/iframe")
driver.switch_to_frame(path)
driver.find_element_by_xpath('//*[@id="applicant.name"]').sendKeys("TEST_NAME")

【问题讨论】:

    标签: python selenium iframe


    【解决方案1】:

    您想要的元素在两个嵌套的IFRAMEs 内。下面的代码应该可以工作。您需要进入第一帧......然后是第一个嵌套帧。其余的应该在那一点上工作。

    driver = webdriver.Firefox()
    driver.get('http://ca.indeed.com/cmp/Clearview-Plumbing-&-Heating/jobs/HVAC-Installer-Opening-6183dce44a9bfe10?sjdu=vQIlM60yK_PwYat7ToXhk42rccfWGklJDtD_zDpWBzDCfUEiSP2Zk-zLpFc6GNuF8wyV4_UaMyNFtpjETvX0fCpQXc3PxTbrGkwAMNkR5vGMtAfe9wNpTncItNgAIJHx')
    driver.find_element_by_css_selector("span.indeed-apply-button-label")).click()
    driver.switch_to_frame(0)
    driver.switch_to_frame(0)
    driver.find_element_by_id("applicant.name")).send_keys(username)
    driver.find_element_by_id("applicant.email")).send_keys(email)
    driver.find_element_by_id("resume")).send_keys(resumePath)
    driver.find_element_by_css_selector("a.button_content.form-page-next")).click()
    driver.find_element_by_id("apply")).click()
    

    【讨论】:

    • 感谢 JeffC 的观察。尽管出于某种原因,我仍然无法单击按钮...我正在尝试单击最后一个应用按钮
    • 你登录了吗?我在我的页面上的 DOM 中看不到您所指的元素。我的页面上的“立即应用”按钮如下所示:<span class="indeed-apply-button-label" id="indeed-ia-1444972086694-1label">Apply Now</span>
    • JeffC 哦,如果你点击那里会出现一个表单。我大部分都填写了,但是还有另一个应用按钮,上面写着“应用”,我想点击它。我已经点击了“立即申请”按钮来启动表单。
    • 我根据您的反馈更新了我的答案。我看错了按钮。
    猜你喜欢
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    相关资源
    最近更新 更多