Мы играли с Selenium и тоже столкнулись с этой проблемой.Я не знаю, является ли это WebDriver в целом, реализацией C #, версией Firefox и т. Д., Но мы нашли хороший обходной путь:
Хитрость заключается в том, чтобы заставить Selenium оценить свойство LocationOnScreenOnceScrolledIntoView
в классе RemoteWebElement
(который наследуется FirefoxWebElement
и реализует IWebElement
).Это заставляет браузер прокручивать страницу так, чтобы элемент был виден.
То, как мы это сделали, - это использовать метод расширения:
using OpenQA.Selenium;
using OpenQA.Selenium.Remote;
namespace Namespace
{
public static class ExtensionMethods
{
public static IWebElement FindElementOnPage(this IWebDriver webDriver, By by)
{
RemoteWebElement element = (RemoteWebElement)webDriver.FindElement(by);
var hack = element.LocationOnScreenOnceScrolledIntoView;
return element;
}
}
}
таким образом, все, что нам нужно сделатьизменить сгенерированный код с:
driver.FindElement(By.Id("elementId")).Click();
на:
driver.FindElementOnPage(By.Id("elementId")).Click();
Надеюсь, это работает для вас!?