免責宣告:我在十多年后重新開始撰寫腳本(一開始我還是個新手),所以如果這個問題很平凡,但非常需要和感謝幫助,我深表歉意。
我正在嘗試修改 python 腳本以將我登錄到作業門戶,根據屬性搜索職位空缺,然后申請所述職位。
由于門戶網站在單獨的選項卡上打開了新的職位空缺,因此代碼應該轉到下一個選項卡并測驗職位描述上的標準
代碼片段如下:
for i in range(1,6):
driver.get('https://www.naukri.com/' role '-jobs-in-' location '-' str(i) '?ctcFilter=' str(LL) 'to' str(UL))
driver.switch_to.window(driver.window_handles[1])
url = driver.current_url
driver.get(url)
try:
test = driver.find_element_by_xpath('//*[@id="root"]/main/div[2]/div[2]/section[2]')
if all(word in test.text.lower() for word in Skillset):
driver.find_element_by_xpath('//*[@id="root"]/main/div[2]/div[2]/section[1]/div[1]/div[3]/div/button[2]').click()
time.sleep(2)
driver.close()
driver.switch_to.window(driver.window_handles[0])
else:
driver.close()
driver.switch_to.window(driver.window_handles[0])
except:
driver.close()
driver.switch_to.window(driver.window_handles[0])
但是,當我運行腳本時,它只是讓我登錄到門戶并轉到正確的串列頁面,但只是停留在那里。另外,它會彈出此錯誤:
> line 43, in <module> driver.switch_to.window(driver.window_handles[1])
> IndexError: list index out of range
無法理解這是指哪個串列以及如何修復此代碼。任何幫助表示贊賞。
感興趣的人的完整代碼:
import selenium
from selenium import webdriver as wb
import pandas as pd
import time
from time import sleep
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
driver = wb.Chrome("/Users/shashank/Desktop/Naukri Auto Apply/chromedriver")
Skillset = ['Marketing','Communications','Sales']
Skillset = [x.lower() for x in Skillset]
LL = 15 #lower limit of expected CTC
UL = 25 #upper limit of expected CTC
location = 'Bangalore'
location = location.lower().replace(" ","-")
role = 'Marketing Manager'
role = role.lower().replace(" ","-")
driver.get("https://www.naukri.com")
driver.find_element_by_xpath('//*[@id="login_Layer"]/div').click()
time.sleep(5)
driver.find_element_by_xpath('//*[@id="root"]/div[3]/div[2]/div/form/div[2]/input').send_keys("email_address_here")
driver.find_element_by_xpath('//*[@id="root"]/div[3]/div[2]/div/form/div[3]/input').send_keys("password_here")
time.sleep(5)
driver.find_element_by_xpath('//*[@id="root"]/div[3]/div[2]/div/form/div[6]/button').click()
time.sleep(20)
driver.find_element_by_xpath('/html/body/div[3]/div/div[1]/div[1]/div').click()
for i in range(1,6):
driver.get('https://www.naukri.com/' role '-jobs-in-' location '-' str(i) '?ctcFilter=' str(LL) 'to' str(UL))
driver.switch_to.window(driver.window_handles[1])
url = driver.current_url
driver.get(url)
try:
test = driver.find_element_by_xpath('//*[@id="root"]/main/div[2]/div[2]/section[2]')
if all(word in test.text.lower() for word in Skillset):
driver.find_element_by_xpath('//*[@id="root"]/main/div[2]/div[2]/section[1]/div[1]/div[3]/div/button[2]').click()
time.sleep(2)
driver.close()
driver.switch_to.window(driver.window_handles[0])
else:
driver.close()
driver.switch_to.window(driver.window_handles[0])
except:
driver.close()
driver.switch_to.window(driver.window_handles[0])
提前感謝您的回答!對找作業真的有幫助!
uj5u.com熱心網友回復:
無需切換到另一個視窗
當您在 中打開
URL具有特定詳細資訊for loop的頁面時,頁面將在同一視窗中一一加載。當打開新視窗選項卡時切換到視窗。參考鏈接選擇顯式等待而不是
time.sleep()。您已經改進了 WebdriverWait 但從未使用過它。嘗試想出好的定位器。選擇相對 Xpath 而不是絕對 Xpath。參考鏈接
不確定您要在try塊中做什么。定位器不會突出顯示頁面中的任何元素。
參考以下代碼:
# Imports
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
driver = webdriver.Chrome(service= Service("path to chromedriver.exe"))
driver.maximize_window()
driver.get("https://www.naukri.com")
wait = WebDriverWait(driver,30)
login_btn = wait.until(EC.element_to_be_clickable((By.XPATH,"//div[text()='Login']")))
login_btn.click()
email = wait.until(EC.element_to_be_clickable((By.XPATH,"//form[@name='login-form']//input[contains(@placeholder,'Email')]")))
email.send_keys("[email protected]")
password = wait.until(EC.element_to_be_clickable((By.XPATH,"//form[@name='login-form']//input[contains(@placeholder,'password')]")))
password.send_keys("password")
password.submit()
role = "marketing-manager"
loc = "bangalore"
llimt = "15"
ulimit = "25"
for i in range(1,6):
driver.get(f"https://www.naukri.com/{role}-jobs-in-{loc}-{i}?ctcFilter={llimt}to{ulimit}")
time.sleep(2)
# Update for Chat bot
try:
chatbot_close = wait.until(EC.element_to_be_clickable((By.XPATH,"//div[@class='chatbot_Nav']/div")))
chatbot_close.click()
except:
print("Chat bot did not appear")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/438445.html
標籤:Python python-3.x 硒 硒铬驱动程序 索引错误
