Python - Selenium:滚动分屏 |领英职位界面

Python - Selenium: Scroll divided screen | Linkedin job interface

我想找到下一个问题的解决方案:正如您在图片中看到的那样,有 2 个滚动界面(rails)。我想获得我已经完成的每项工作(用于制作自动化申请流程),但是我一次只能获得 9 个元素,因此屏幕,因此每次我得到当前元素时我都需要向下滚动。 linkedin divided interface

job_titles = driver.find_elements_by_class_name('jobs-search-results__list-item')

for job_title in job_titles:
    print(job_title.text.split('\n')[0])
    driver.implicitly_wait(random_number)
    time.sleep(random_number)

    left_rail = driver.find_element_by_css_selector('.jobs-search__left-rail')
    driver.implicitly_wait(random_number)
    time.sleep(random_number)
    left_rail.send_keys(Keys.PAGE_DOWN)

这是我正在使用的代码,它可以工作。我尝试使用 youtube,当我选择 body 或 html 作为标签时,我可以滚动(甚至在屏幕未最大化时在 linkedin 上工作,因为那样屏幕就不会被分割。

但是一旦分开就不行了。我试图抓住每一个可能的元素,但到目前为止没有成功。唯一难以处理的元素是 jobs-search__left-rail class( 见下图。但是,一旦我选择了这个项目,它就不会滚动。 enter image description here

非常感谢!

在我看来,当使用 Chrome 时,需要滚动的左侧元素可以用与整个 window 相同的方式进行控制(同样,当我通过 Safari 打开 LinkedIn 时,页面不会被分割并且window 的主滚动条控制左侧)。

所以在确定了硒元素列表后 - jobs_list

jobs_block= driver.find_element(By.CSS_SELECTOR, '.jobs-search-results__list')
jobs_list= jobs_block.find_elements(By.CSS_SELECTOR, '.jobs-search-results__list-item')

我使用 .execute_script 遍历列表以显示新元素

n = 0
for i in jobs_list:
    print("__________")
    n+=1
    driver.execute_script("arguments[0].scrollIntoView();", jobs_list[n-1])
    print(n, " ",i.text)

它对我有用,希望它对您和其他寻求解决方法的人有用。我对这个解决方案只是部分满意,因为它仍然没有涵盖如何滚动屏幕的右侧。