问题描述
希望大家都过得愉快。我正在尝试让我的代码与Selenium一起使用,但没有任何结果适合我。我在C#中将无头模式与chromedriver和Selenium一起使用。我试图滚动到某个元素,因为如果不这样做,我将无法单击某个元素。我已经尝试了两种操作来滚动到该元素和JS,但是在使用无头模式时,这两种方法似乎都不起作用,而在没有这种情况下,效果很好。有人对什么可行有想法吗?谢谢!
编辑 谢谢,标记的解决方案似乎可以滚动到所有元素。当内容(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);