如何正确点击popunder所涵盖的按钮?

时间:2016-06-23 17:20:22

标签: c# selenium phantomjs

我在网页上填写表格。提交按钮位于表单的底部,但它由popunder覆盖。当我尝试element.click()时,它只会抛出一个错误:

  

System.InvalidOperationException

并说:

  

元素在点(570,793)处无法点击。其他元素会收到点击:<html of popunder element>

我可以以某种方式向下滚动来查看它,但必须有一些其他方法。我已经尝试将浏览器窗口高度设置为一个大数字,但这不起作用。

2 个答案:

答案 0 :(得分:1)

您可以为任何IWebElements创建一个Adjust扩展方法,将其滚动到窗口的中心,如:

public static IWebElement Adjust(this IWebElement element)
{
    var windowHeight = Convert.ToInt32(((IJavaScriptExecutor)driver).ExecuteScript("return window.innerHeight;"));
    var scrollPage = element.Location.Y - windowHeight/2;

    ((IJavaScriptExecutor)driver).ExecuteScript("window.scrollTo(0, " + scrollPage + ")");
    return element;
}

要使用,您需要在Click方法之前调用调整()

driver.FindElement(By.CssSelector("your-selector")).Adjust().Click();

答案 1 :(得分:0)

我最后向下滚动,但这仅在已知按钮位于固定坐标时才有效,因此这不是最佳答案。但是,这是一个答案,所以我将发布代码。

((IJavaScriptExecutor)driver).ExecuteScript("window.scrollTo(0, 700)");