Нажмите кнопку загрузить больше jooble selenium python

#python #selenium #selenium-webdriver #web-scraping #beautifulsoup

Вопрос:

Я пытаюсь очистить эту страницу в Интернете и ищу способ нажать кнопку «Загрузить больше» с помощью selenium python. Я пробовал использовать эти коды

 driver.find_element(By.LINK_TEXT, "Load more").click()

driver.find_element_by_xpath('//*[@id="root"]/div/div[1]/div[1]/main/div[2]/div[1]/div/button/span').click()

driver.find_element_by_xpath('//*[@id="root"]/div/div[1]/div[1]/main/div[2]/div[1]/div/button').click()
 

но ни один из вышеперечисленных не работал с основным кодом,моим альтернативным решением было использование свитка, подобного этому…

 def infinite(driver):
    
    scroll_pause_time = 10

    # Get scroll height
    last_height = driver.execute_script("return document.body.scrollHeight")

    while True:

        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

        time.sleep(scroll_pause_time)

        try:
            driver.find_element_by_xpath('//*[@id="root"]/div/div[1]/div[1]/main/div[2]/div[1]/div/button').click()#This doesn't work
        except:
            print('No button')
        new_height = driver.execute_script("return document.body.scrollHeight")
        driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL   Keys.HOME)
        print('yeah!')
        if new_height == last_height:
            # If heights are the same it will exit the function
            break
        last_height = new_height
 

Ответ №1:

Есть такое modal pop-up window , что вы можете нажать на кнопку » Да » или » Нет » или «Чтобы X «.

Как только это произойдет clicked , вам придется прокрутить весь путь вниз до кнопки, и Селен сможет увидеть кнопку «Загрузить еще», в конце концов, вы сможете нажать на нее.

Код :

 driver = webdriver.Chrome(driver_path)
driver.maximize_window()
wait = WebDriverWait(driver, 30)

driver.get("https://jooble.org/SearchResult?date=8amp;p=5amp;rgns=New York, NYamp;ukw=software")
try:
    wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[aria-label='Close']"))).click()
except:
    pass

driver.execute_script("var scrollingElement = (document.scrollingElement || document.body);scrollingElement.scrollTop = scrollingElement.scrollHeight;")
wait.until(EC.element_to_be_clickable((By.XPATH, "//span[text()='Load more']/.."))).click()
 

Импорт :

 from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC