gpt4 book ai didi

python - 滚动到 Selenium 中的下一个元素(Python)

转载 作者:行者123 更新时间:2023-12-02 02:35:48 26 4
gpt4 key购买 nike

我正在尝试用 Python 中的 Selenium 创建一个 facebook 评论机器人。我需要向下滚动到用于在评论中上传照片的按钮才能发表评论,我有这行代码:

ActionChains(driver).move_to_element(driver.find_element_by_id('my-id')).perform()

当我再次运行它时,它会滚动到同一个按钮,我需要滚动到下一个按钮。还有一个问题:这个按钮没有 id。有什么办法吗?

最佳答案

因此,为了滚动到多个元素,您需要使用 driver.execute_script()方法。如果您有驱动程序并且打开了页面,那么您需要隔离要导航到的元素。

element = driver.find_element(By.XPATH, "Whatever xpath you want")
driver.execute_script("return arguments[0].scrollIntoView();", element)

有了这个之后,您将需要获得要滚动浏览的所有元素的数量。例如,在 Top 100 Greatest Movies List网站,我创建了一个方法来获取当前显示的电影数量

def get_movie_count(self):
return self.driver.find_elements(By.XPATH, "//div[@class='lister-list']//div[contains(@class, 'mode-detail')]").__len__()

在那之后,我创建了另一个滚动到我的元素的方法

def scroll_to_element(self, xpath : str):
element = self.driver.find_element(By.XPATH, xpath)
self.driver.execute_script("return arguments[0].scrollIntoView();", element)

完成后,我创建了一个 for-loop并滚动到每个元素

for row in range(movieCount):
driver.scroll_to_element("//div[@class='lister-list']//div[contains(@class, 'mode-detail')][{0}]".format(row + 1))

更新:添加照片以提供帮助 Sample Program to Scroll through 100 elements

图片说明
在这张照片中,我们有我们的WebDriver类(class)。这是创建我们的 Chrome WebDriver 的类,并包含我们想要的任何选项。就我而言,我不想一直看到“这是由自动化控制的”警告。

WebDriver类,我有一个方法叫做 wait_displayedselenium检查浏览器的 DOM对于使用 xpath 的特定元素.如果该元素存在于浏览器的 DOM 中, 一切都很好。否则,python将提高 Exception让我知道selenium找不到我的元素。在这门课中,我包括了 scroll_to_element允许我的 chrome 驱动程序在页面上找到元素并执行 JavaScript 的方法滚动到找到的元素的代码。

SampleSite类,我们继承了WebDriver类(class)。这意味着我的 SampleSite类可以使用我的 WebDriver 中显示的方法类(class)。 (如 wait_displayedscroll_to_element )在 SampleSite 中类,我提供一个 optional parameter在里面 constructor方法。 ( __init__() ) 这个可选参数告诉程序员,如果他们想创建一个 instanceobjectSampleSite类,他们需要传入现有的 chrome 驱动程序;或者,传入 NoneSampleSite类将打开谷歌浏览器并导航到我们的 100 部最伟大的电影页面。这是我创建 def get_movie_count(self): 的类方法。

在我们的 main_program.py文件,我导入了我们的 SampleSite类(class)。导入后,我创建了我们类的一个实例并调用了 get_movie_count方法。一旦该方法返回我的电影计数( 100 ),我创建了一个 for-loop滚动浏览我的每个元素。

关于python - 滚动到 Selenium 中的下一个元素(Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64340247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com