javascript - 如何通过javascript函数获取当前web元素的clientHeight和scrollHeight?

标签 javascript c# selenium selenium-webdriver webdriver

问题是当我们从 C# 代码调用函数时获取当前 webElement 的 clientHeight 和scrollHeight,如下所示,

注意:我们的应用程序中没有任何 id,并且从 xpath 访问了这些 webElement。

((IJavaScriptExecutor)driver)?.ExecuteScript("return 
helper.getDimensions();",webElement);

在 JavaScript 函数中,

var helper={
  getDimensions = function(){
     return '{webElementViewPortHeight:'+arguments[0].clientHeight}'
 }

}

如果我们像下面的语句一样传递,我将获得当前 webElement 的 clientHeight,

((IJavaScriptExecutor)driver)?.ExecuteScript("return ' 
 {webElementViewPortHeight:'+arguments[0].clientHeight}'",webElement);

当我们调用函数时,我期望得到 webElement 的值。

最佳答案

WebElement 的相关 HTML 将帮助我们构建规范的答案。但是您可以使用以下解决方案:

  • 检索clientHeight :

    Console.WriteLine((string)((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0].clientHeight;", new WebDriverWait(driver, 20).until(ExpectedConditions.ElementIsVisible(By.Id("element_id")))));
    
  • 检索scrollHeight :

    Console.WriteLine((string)((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0].scrollHeight;", new WebDriverWait(driver, 20).until(ExpectedConditions.ElementIsVisible(By.Id("element_id")))));
    
<小时/>

Java 工作示例

当针对 Google Home Page 上的文本框执行脚本时:

  • 代码块:

    public class A_demo 
    {
        public static void main(String[] args) throws Exception 
        {
            System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
            ChromeOptions options = new ChromeOptions();
            options.addArguments("start-maximized");
            options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
            options.setExperimentalOption("useAutomationExtension", false);
            WebDriver driver = new ChromeDriver(options);
            driver.get("https://www.google.com/");
            System.out.println("Client Height is: "+((JavascriptExecutor)driver).executeScript("return arguments[0].clientHeight;", new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.name("q")))).toString());
            System.out.println("Scroll Height is: "+((JavascriptExecutor)driver).executeScript("return arguments[0].scrollHeight;", new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.name("q")))).toString());
        }
    }
    
  • 控制台输出:

    Client Height is: 34
    Scroll Height is: 34    
    

关于javascript - 如何通过javascript函数获取当前web元素的clientHeight和scrollHeight?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57709271/

相关文章:

javascript - JavaScript中变量的范围是什么?

javascript - Prototype vs. Not,有什么好处?

c# - 向主机发送大量请求时,System.Net.HttpWebRequest.GetResponse() 操作超时

c# - 索引(从零开始)必须大于或等于零统一

C#:PointF() 数组初始化器

javascript - 使用 webkit 数据库存储高分

python - WebElement 在调用 driver.refresh() 后作为 NoneType 返回

java - 我如何在 Selenium 中点击这个 href 链接?

python-3.x - 我想右键单击并使用 selenium 和 python 在新选项卡中打开链接

javascript - 如何在 JWPlayer 的 ("seek") 回调中查找