Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在元素上执行单击_Javascript_Selenium - Fatal编程技术网

Javascript 在元素上执行单击

Javascript 在元素上执行单击,javascript,selenium,Javascript,Selenium,我正在开发SeleniumWebDriver。 我需要将鼠标指向一个元素并单击它,我想在这里使用javascript而不是XPath 该元素的javascript不是一个方法,因此我可以直接启动它。 我不知道如何创建一个javascript,以便在自动执行时,该方法应该转到该对象(我只想使用其javascript指向该对象)并执行单击 元素的javascript: javascript:setParam(paramOrderNbr, '4'); go('survey_editing.jsp','

我正在开发SeleniumWebDriver。 我需要将鼠标指向一个元素并单击它,我想在这里使用javascript而不是XPath

该元素的javascript不是一个方法,因此我可以直接启动它。 我不知道如何创建一个javascript,以便在自动执行时,该方法应该转到该对象(我只想使用其javascript指向该对象)并执行单击

元素的javascript:

javascript:setParam(paramOrderNbr, '4');
go('survey_editing.jsp','actMoveItemUp);
请帮忙

库马尔

试试这个:

String cssSelector =.... //css selector of the element you want click on
JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("var x = $(\'"+cssSelector+"\');");
        stringBuilder.append("x.click();");
        js.executeScript(stringBuilder.toString());
希望这对你有用

干得好。 但是试着修改一点css选择器。 只需尝试
map[name=“edit_1”]>area
但在您尝试执行anuthing之前,请使用firebug验证(我使用ffox中的firepath、firebug插件)来验证css选择器是否正确。 然后尝试执行上面提到的代码。它总是有效的

但也有可能尝试另一种方法。如果您的selenium测试与使用onmousehover操作处理指出web元素相连接。 然后,用户可以使用action builder:

WebElement mnuElement;
WebElement submnuElement;
mnEle = driver.findElement(By.Id("mnEle")).click();
sbEle = driver.findElement(By.Id("sbEle")).click();

Actions builder = new Actions(driver);
// Move cursor to the Main Menu Element
builder.moveToElement(mnEle).perform();
// Giving 5 Secs for submenu to be displayed
Thread.sleep(5000L);
// Clicking on the Hidden SubMenu
driver.findElement(By.Id("sbEle")).click();

请检查此问题后立即通知。

我已经对您的问题做了一些调查。现在我有点沮丧。 Firebug无法找到
标记中包含的任何内容。 见下图

所以,如果我们不能使用标准的树DOM模型定位元素,那么最后一个假设就剩下了(在我看来)。如果遇到你的问题,我将只分享我将实施的想法。只需尝试使用js单击固定坐标,但这被认为是一种糟糕的方法。这是解释 因此,返回到js定位坐标,单击即可使用 使用所描述的部分,我们定位需要定位的元素的x,y坐标。和使用 您实际上可以执行单击。 诸如此类:

JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("x.trigger("click", [x, y]);"); //where [x,y] you've already //obtained
        js.executeScript(stringBuilder.toString());
顺便说一下,您可以了解高级用户操作。我发现它在某些情况下非常有用

但在我看来,在DOM中找到所需元素仍然是可能的。
希望我的回答能有所帮助)

我无法获得该元素的正确/准确的CSS,否则我也可以尝试使用CSS选择器而不是XPath并使用javascript方法。请帮助。你能提供完整的html并指出你需要选择的元素吗?我无法在这里发布完整的html。超过3000个字符。除了CSS选择器,没有其他选项或方法来解决我最初的问题吗?否则,您能否帮助我如何通过查看元素的HTML来为元素构建/创建css选择器路径?谢谢。任何html标记通常都有ID或class属性。此外,每个html标记都有父标记和子标记。整个HTML实际上是用树结构表示的(参见DOM模型)。因此,查找css的想法如下(我举一个例子):html body div[class=“myClass1”]p[id=“someId”]。。。。从HTML的最顶端开始,通过整个结构,从父元素(如我的示例中的HTML)到最后的子元素(如我的示例中的p标记)元素,获取需要定位的节点。注意:尽量避免使用标签ID,例如j_idt12:j_idt13。注意:我使用firebug和firepath-addon-to-firebug来确保我正确找到元素定位器。Anks Eugene,我会尝试使用它,但觉得它可能不起作用。当做