我正在用C_中的Selenium WebDriver进行WebTest。但我有一个问题,当浏览器窗口不是全尺寸时,弹出窗口会在可见区域的一半之外打开。
问题是,当我启动.click()时,它不会执行任何操作,因为我试图单击的链接不在查看区域内。
那么,我该如何关注这个链接才能让点击工作呢?我目前正在使用以下解决方法,但我认为这不是一个好办法。

        _blogPostPage.FindElement(By.XPath(_popupLogin)).SendKeys("");
        _blogPostPage.FindElement(By.XPath(_popupLogin)).Click();

带有空格的sendkeys关注于链接,并使click每次都能工作,但是难道没有正确的方法来做到这一点吗?

最佳答案

我们一直在玩硒,也遇到了这个问题。我不知道是不是整个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();

希望对你有用!?

关于c# - 如何以正确的方式关注元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7349104/

10-10 11:17
查看更多