如何使用 Selenium WebDriver 滚动到元素(使用无头模式时)
How to scroll to element with Selenium WebDriver (when using headless mode)
希望你们今天过得愉快。我试图让我的代码与 Selenium 一起工作,但对我来说没有任何效果。我在 C# 中使用带有 chromedriver 和 Selenium 的无头模式。我试图滚动到某个元素,因为如果不这样做我就无法单击某个元素。我已经尝试了滚动到此元素和 JS 的两种操作,但是在使用无头时这些似乎都不起作用,而没有头时效果很好。有人知道什么可行吗?谢谢!
编辑:
谢谢,就滚动到元素而言,标记的解决方案似乎有效。当内容(Spotify 上的歌曲)没有以无头方式播放时,我仍然面临一个问题,成功点击播放歌曲的元素,但歌曲实际上没有播放,我可以通过回显播放时间看到进入控制台。当不使用无头时,这完全可以正常工作。有什么想法吗?
更新:
原来这个问题是完全不相关的,DRM 在无头模式下不起作用。这意味着 Spotify 在无头模式下无法播放歌曲。
尝试将这些参数添加到您的驱动程序实例中:
ChromeOptions options = new ChromeOptions();
options .addArguments("--headless")
options .addArguments("--window-size=1920x1080")
options .addArguments("start-maximised")
options .addArguments("--no-sandbox")
options .addArguments("--disable-dev-shm-usage")
尝试使用它来使用无头并滚动到一个元素。
ChromeOptions options = new ChromeOptions();
options.AddArguments("--headless");
driver = new ChromeDriver(options);
var elem = driver.FindElement(By.ClassName("something"));
driver.ExecuteScript("arguments[0].scrollIntoView(true);", elem);
希望你们今天过得愉快。我试图让我的代码与 Selenium 一起工作,但对我来说没有任何效果。我在 C# 中使用带有 chromedriver 和 Selenium 的无头模式。我试图滚动到某个元素,因为如果不这样做我就无法单击某个元素。我已经尝试了滚动到此元素和 JS 的两种操作,但是在使用无头时这些似乎都不起作用,而没有头时效果很好。有人知道什么可行吗?谢谢!
编辑:
谢谢,就滚动到元素而言,标记的解决方案似乎有效。当内容(Spotify 上的歌曲)没有以无头方式播放时,我仍然面临一个问题,成功点击播放歌曲的元素,但歌曲实际上没有播放,我可以通过回显播放时间看到进入控制台。当不使用无头时,这完全可以正常工作。有什么想法吗?
更新:
原来这个问题是完全不相关的,DRM 在无头模式下不起作用。这意味着 Spotify 在无头模式下无法播放歌曲。
尝试将这些参数添加到您的驱动程序实例中:
ChromeOptions options = new ChromeOptions();
options .addArguments("--headless")
options .addArguments("--window-size=1920x1080")
options .addArguments("start-maximised")
options .addArguments("--no-sandbox")
options .addArguments("--disable-dev-shm-usage")
尝试使用它来使用无头并滚动到一个元素。
ChromeOptions options = new ChromeOptions();
options.AddArguments("--headless");
driver = new ChromeDriver(options);
var elem = driver.FindElement(By.ClassName("something"));
driver.ExecuteScript("arguments[0].scrollIntoView(true);", elem);