【问题标题】:How to get a current webelement clientHeight and scrollHeight through javascript function?如何通过javascript函数获取当前的webelement clientHeight和scrollHeight?
【发布时间】:2020-01-02 16:14:50
【问题描述】:

问题是当我们从下面的c#代码中调用函数时,获取当前webElement的clientHeight和scrollHeight,

注意:我们的应用程序中没有任何 id,而是从 xpath 访问这些 webElements。

((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 的值。

【问题讨论】:

    标签: javascript c# selenium selenium-webdriver webdriver


    【解决方案1】:

    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    
      

    【讨论】:

    • 感谢您的快速回复。这里做个小改动,而不是直接调用这个语句:return arguments[0].clientHeight;,把这行代码放在一个javascript函数里面调用。
    猜你喜欢
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多