python - 如何在 python 中使用 selenium 在网站中单击继续按钮?
问题描述
我正在尝试编写一个能够在 Indeed.com 上自动申请职位空缺的代码。我已经成功进入最后阶段,但是,申请表的最后 2 次点击给我带来了很多麻烦。请参考以下第一页
一旦我们点击第一页上的继续,对于第二页,我首先需要向下滚动一点才能从这里到达......
..到这里然后最后点击应用。
我被困在第一页,因为点击功能没有做任何事情。我写了以下代码:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
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()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@id='form-action-continue']"))).click()
driver.find_element_by_xpath('//button[@id="form-action-continue"]').click()
我已尝试为此步骤再次切换 iframe,但没有任何反应。甚至 .click() 函数也不做任何事情。
将不胜感激这方面的一些帮助。
解决方案
如果输入了您的值,这应该通过第一次单击。
driver.get("https://in.indeed.com/jobs?q=data%20analyst&l=Delhi&vjk=5c0bd416675cf4e5")
wait=WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.indeed-apply-button"))).click()
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)
cont="#form-action-continue"
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, cont))).click()
推荐阅读
- python - Sonarqube 客户端无法解析 pytest 覆盖结果
- node.js - 我想在 lambda 函数中异步调用外部 API(天气 API)
- odoo - 哪个数据库表存储odoo用户登录详细信息
- spring-boot - 类型与 KFunction1 不匹配
> - sql-server - 当条件为“缺少数据”时,如何创建条件类型的 JOIN 或 WHERE 子句?
- android - 如何在 didChangeAppLifecycleState(iOS 和 android 设备)上完全重启颤振应用程序
- angular - Angular 页面在服务器端渲染后加载两次
- apache-spark - coalesce(1).limt(100000) 的性能
- node.js - 我在邮递员中发送了一些 json 数组数据,但似乎错误
- ios - “可以转换为 Swift 5” 无法转换代码