首页 > 解决方案 > 如何在硒的新标签中滚动

问题描述

我通过单击 c# 中的 selenium 中的某些内容打开了一个新选项卡。我想在切换到新标签后滚动,但出现超时错误。

我收到一条超时消息并且没有滚动。

这是 C# 代码。

二手铬 79

Chrome 选项是

options.AddArguments("handlesAlerts=false");
            options.AddArguments("--disable-infobars");
            options.AddArguments("--no-sandbox");
            options.AddArguments("--disable-background-networking");
            options.AddArguments("--disable-component-extensions-with-background-pages");
            options.AddArguments("--dns-prefetch-disable");
            options.AddArguments("--ignore-certificate-errors");
            options.AddArguments("--ignore-certificate-errors-spki-list");
            options.AddArguments("--ignore-ssl-errors");
            options.AddArguments("--allow-running-insecure-content");
            options.AddArguments("lang=ko_KR");


if (this.driver.WindowHandles.Count > 1)
{
this.driver.SwitchTo().Window(this.driver.WindowHandles[1]);
}
Utils.sleep(3000);
((IJavaScriptExecutor)this.driver).ExecuteScript("window.scrollBy(0,500);");

标签: c#seleniumselenium-webdriver

解决方案


请使用下面的代码它会正常工作

 //Open link in new tab
 Actions act = new Actions(driver);
 act.KeyDown(Keys.Control).MoveToElement(elementToopenInNewTab).Click().Perform();
 // Switch to new tab
 driver.SwitchTo().Window(driver.WindowHandles.Last());

 //Scroll down in new tab

  IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
  js.ExecuteScript("window.scrollTo(0, document.body.scrollHeight)");

 //Move to first tab again 
  driver.SwitchTo().Window(driver.WindowHandles.First());

推荐阅读