用selenium编写javascript

用selenium编写javascript,javascript,java,selenium,Javascript,Java,Selenium,我正在用selenium编写javascript,但它不起作用。。。。这是我的密码 FluentJavascript variable = executeScript("return arguments[0].getBoundingClientRect();", element); // to get x, y, width and height of element 有什么建议吗?如果试图检索元素的大小及其相对于的位置,则可以按如下方式调用该方法: JavascriptExecutor js

我正在用selenium编写javascript,但它不起作用。。。。这是我的密码

FluentJavascript variable = executeScript("return arguments[0].getBoundingClientRect();", element); // to get x, y, width and height of element

有什么建议吗?

如果试图检索元素的大小及其相对于的位置,则可以按如下方式调用该方法:

JavascriptExecutor js = (JavascriptExecutor) driver;  
WebElement element = driver.findElement(By.xpath("element_xpath"));
Dimension mydimension =  (Dimension) js.executeScript("return arguments[0].getBoundingClientRect();", element);
var rect = document.getElementById("myElement").getBoundingClientRect();
  • 通过Java,您可以使用维度类并调用
    getBoundingClientRect()
    ,如下所示:

    JavascriptExecutor js = (JavascriptExecutor) driver;  
    WebElement element = driver.findElement(By.xpath("element_xpath"));
    Dimension mydimension =  (Dimension) js.executeScript("return arguments[0].getBoundingClientRect();", element);
    
    var rect = document.getElementById("myElement").getBoundingClientRect();
    
  • 通过Javascript,您可以调用
    getBoundingClientRect()
    ,如下所示:

    JavascriptExecutor js = (JavascriptExecutor) driver;  
    WebElement element = driver.findElement(By.xpath("element_xpath"));
    Dimension mydimension =  (Dimension) js.executeScript("return arguments[0].getBoundingClientRect();", element);
    
    var rect = document.getElementById("myElement").getBoundingClientRect();
    
    此行将返回包含整个元素的最小矩形,该矩形具有以像素为单位描述整个边框框的左、上、右、下、x、y、宽度和高度属性


注意:除宽度和高度以外的属性都是相对于视口的左上角的。

我倾向于认为executeScript更容易:

    ((JavascriptExecutor)driver).executeScript("return arguments[0].getBoundingClientRect();", element); 

还要确保元素确实存在

你犯了什么错误?@john这不是编译好的,什么是不编译的?而且,我看不出这一行代码是如何相关的。除非您没有导入
FluentJavascript
,因此编译器不知道如何处理它,或者
executeScript
具有不同的签名。或erhaps
元素
从未初始化。这纯粹是猜测,但编译器应该非常明确地告诉您这两种情况是否都是这样。JS肯定与此无关。@嗯,编译错误一定是有原因的,请检查它的消息/stacktrace。请粘贴编译错误消息。但我想在java上下文中编写它(selenium要切中要害),就我们所知,在OP的例子中,
executeScript
实际上可能最终只是调用它。我们仍然不知道他到底犯了什么错误,因此不知道你的替换线路是否能正常工作。