Javascript Selenium Python:如何在弹出窗口中向下滚动

Javascript Selenium Python:如何在弹出窗口中向下滚动,javascript,python,selenium,web-scraping,linkedin,Javascript,Python,Selenium,Web Scraping,Linkedin,我正在从事Linkedin的网页抓取项目。我正在尝试获取某人感兴趣的公司列表(请注意,我没有使用API)。这是一个动态的网站,所以我需要向下滚动,同时删除公司名称。我知道如何在主窗口中执行此操作,但由于感兴趣的是弹出窗口,滚动解决方案不起作用。到目前为止,我的代码是: from selenium.webdriver.common.keys import Keys bar = driver.find_element_by_xpath('//ul[@class="entity-list row"]'

我正在从事Linkedin的网页抓取项目。我正在尝试获取某人感兴趣的公司列表(请注意,我没有使用API)。这是一个动态的网站,所以我需要向下滚动,同时删除公司名称。我知道如何在主窗口中执行此操作,但由于感兴趣的是弹出窗口,滚动解决方案不起作用。到目前为止,我的代码是:

from selenium.webdriver.common.keys import Keys
bar = driver.find_element_by_xpath('//ul[@class="entity-list row"]')
bar.send_keys(Keys.END)
因为它不起作用,我也试着:

bar = driver.find_element_by_xpath('//ul[@class="entity-list row"]')
driver.execute_script('arguments[0].scrollTop = arguments[0].scrollHeight', bar)
问题是,我不是在弹出窗口中操作,而是在主窗口中操作,因此它没有达到预期效果


您可以尝试在弹出窗口中查找元素(可以聚焦的元素),例如一些锚:

element_inside_popup = driver.find_element_by_xpath('//div[@class="entity-list-wrapper ember-view"]//a')
然后使用以下代码向下滚动弹出窗口:

from selenium.webdriver.common.keys import Keys

element_inside_popup.send_keys(Keys.END)

找到“向下滚动”箭头css并单击它,直到找到元素?人类就是这样做的。请看:SO的期望是,用户提出问题时,不仅要研究如何回答自己的问题,还要分享研究、代码尝试和结果。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!另见:是的,我同意JeffC。到目前为止,我添加了我的代码以使其更加完整。只是澄清一下:“//a”到底做什么?我意识到,没有它,代码就无法聚焦元素。驱动程序如何知道元素何时结束,以便不再向下滚动?
//a
意味着在弹出窗口中返回任何第一个链接。您想滚动到弹出窗口的最底部还是特定元素?谢谢!我现在明白了“//a”的魔力。我想得到所有公司的列表,我意识到只有当我到达元素的末尾时,它才会完全显示出来。我懂了。您需要在未收到完整列表时进行XHR吗?在弹出窗口中尝试
element\u。在while循环中发送\u键(keys.END)
。您应该检查公司的数量,如果在某些迭代中没有新公司,请打破循环,我会收到此错误selenium.common.exceptions.StaleElementReferenceException:Message:stale的元素引用;元素不再附加到DOM,或者文档已刷新。有没有办法在没有时间的情况下把它弄到头去睡一觉?