【问题标题】:How to click the Continue button within https://in.indeed.com/ website using selenium in python?如何在 python 中使用 selenium 在 https://in.indeed.com/ 网站中单击 Continue 按钮?
【发布时间】:2021-04-09 16:44:42
【问题描述】:

我正在尝试编写一个能够自动申请 Indeed.com 上的职位空缺的代码。我已经到了最后一个阶段,但是,最后点击申请表给我带来了很多麻烦。请参考以下页面

登录到我的个人资料后,我会转到相关搜索页面,单击我感兴趣的列表,然后在最后一页(如上所示)我尝试使用 xpath 单击继续按钮。对于上一步(也是同一表单上的页面),表单有多个 iframe,我能够成功切换。现在对于当前页面,我被卡住了,因为点击功能没有做任何事情。我写了以下代码:

driver.get("https://in.indeed.com/jobs?q=data%20analyst&l=Delhi&vjk=5c0bd416675cf4e5")
driver.find_element_by_xpath('//*[@id="apply-button-container"]/div[1]/span[1]').click()
time.sleep(5)
frame_1 = driver.find_element_by_css_selector('iframe[title="Job application form container"')
driver.switch_to.frame(frame_1)
frame_2 = driver.find_element_by_css_selector('iframe[title="Job application form"]')
driver.switch_to.frame(frame_2)
continue_btn = driver.find_element_by_css_selector('#form-action-continue')
continue_btn.click()
driver.find_element_by_xpath('//*[@id="form-action-continue"]').click() 

我已尝试为此步骤再次切换 iframe,但没有任何反应。甚至 .click() 函数也不做任何事情。

将不胜感激这方面的一些帮助。

【问题讨论】:

    标签: python selenium xpath iframe css-selectors


    【解决方案1】:

    元素 Continue 位于嵌套的 <iframe> 元素中,因此您必须:

    • 诱导WebDriverWait 使 框架可用并切换到它

    • 诱导 WebDriverWait 使 child 框架可用并切换到它

    • 诱导WebDriverWait 使所需的元素可点击

    • 您可以使用以下任一Locator Strategies

      • 使用CSS_SELECTOR:

        driver.get("https://in.indeed.com/jobs?q=data%20analyst&l=Delhi&vjk=5c0bd416675cf4e5")
        WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "span.indeed-apply-button-label"))).click()
        WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[id^='indeedapply-modal-preload']")))
        WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[title='Job application form']")))
        WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button#form-action-continue"))).click()
        
      • 使用XPATH:

        driver.get("https://in.indeed.com/jobs?q=data%20analyst&l=Delhi&vjk=5c0bd416675cf4e5")
        WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[@class='indeed-apply-button-label']"))).click()
        WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[starts-with(@id, 'indeedapply-modal-preload')]")))
        WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@title='Job application form']")))
        WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@id='form-action-continue']"))).click()
        
    • 注意:您必须添加以下导入:

       from selenium.webdriver.support.ui import WebDriverWait
       from selenium.webdriver.common.by import By
       from selenium.webdriver.support import expected_conditions as EC
      
    • 浏览器快照:


    参考

    您可以在以下位置找到一些相关讨论:

    【讨论】:

    猜你喜欢
    • 2021-04-09
    • 2021-04-08
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多