单击命令不适用于元素

时间:2012-04-11 19:55:10

标签: selenium-ide

我们在web application

中使用了这些组件

在页面上,您可以看到包含一些按钮的工具栏。如果单击任何按钮,它会将日志写入日志栏。

问题是我无法使用Selenium IDE记录此行为。 IDE创建一个命令,但是当我执行命令时没有任何反应。甚至没有记录错误。

可能是什么问题?

8 个答案:

答案 0 :(得分:3)

以低速执行脚本

使用xpath标识

之类的元素
clickAt  | //div[text()='New']

单击“新建”按钮

答案 1 :(得分:1)

我访问了网站http://www.dhtmlx.com/docs/products/dhtmlxToolbar/samples/01_init/08_events.html

我使用xpath检查器得到了xpath,如下所示:

剪切 - id('toolbarObj')/x:div[5]/x:div[11]/x:div

复制 - id('toolbarObj')/x:div[5]/x:div[12]/x:div

粘贴 - id('toolbarObj')/x:div[5]/x:div[13]/x:div

您可以将修改后的xpath用作:

selenium.click("//div[@id='toolbarObj']/div[5]/div[11]/div");//Cut
selenium.click("//div[@id='toolbarObj']/div[5]/div[12]/div");//Copy
selenium.click("//div[@id='toolbarObj']/div[5]/div[13]/div");//Paste

答案 2 :(得分:1)

我不知道这会有所帮助,但它确实帮助了我

如果您需要键入任何文本,然后单击任何元素或按钮

有两种方法 首先使用“sendKeys”键入然后“单击”所需的元素将起作用。 对于例如flipkart.com“类型”不起作用,但“sendKeys”确实

第二是 使用“类型”然后按回车而不是点击使用目标中的“sendKeys”,您输入的字段必须包含“${KEY_ENTER}

例如,会更好地帮助你 第一种方法: The First Method

第二种方法: The Second Method

幸运的是,两人都为我工作了

答案 3 :(得分:0)

可能是selenium脚本启动得太快了。我猜你正在使用的组件会为所有按钮生成一堆HTML。如果脚本启动得太早,则可能尚未生成html。尝试慢一点运行selenium脚本。

另外:我认为selenium使用XPath来访问页面中的HTML元素。您确定selenium脚本是指正确的HTML节点吗?您可以通过查看selenium脚本(它的XML)来查看它,并查看它用于按钮的XPath选择器。

可能的情况是,selenium可能无法在不可点击的目标上触发点击事件(按钮是div),但我不认为是这种情况。你可以试试。

答案 4 :(得分:0)

如果点击img本身而不是div,怎么办? E.g:

//img[contains(@src, 'paste')]

当您点击Selenium IDE上的“查找”时,它是否实际突出显示页面上的某些内容?

答案 5 :(得分:0)

当javascript将项目加载到页面时,IDE不能完美录制,因此可能需要手动帮助。

在尝试点击之前,您是否尝试过等待加载元素?我可能会建议插入waitForElementPresent命令,例如waitForElementPresent |在尝试点击之前#toolbarObj。

答案 6 :(得分:0)

以下是完成此操作的完整代码:

package riponalwasim.selenium.webdriver.stackoverflow;

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class CutCopyPaste {
    WebDriver driver;
    String baseUrl;
    @BeforeClass
    public void setUp() throws Exception {
        baseUrl = "http://www.dhtmlx.com/docs/products/dhtmlxToolbar/samples/01_init/08_events.html";
        driver = new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.get(baseUrl);
    }

    @Test
    public void testCutCopyPaste() throws Exception {
        driver.findElement(By.xpath("//div[text()='New']")).click();
        driver.findElement(By.xpath("//div[@id='toolbarObj']/div[5]/div[11]/div")).click();
        driver.findElement(By.xpath("//div[@id='toolbarObj']/div[5]/div[12]/div")).click();
        driver.findElement(By.xpath("//div[@id='toolbarObj']/div[5]/div[13]/div")).click();
    }

    @AfterClass
    public void tearDown() throws Exception {
        driver.quit();
    }
}

答案 7 :(得分:-2)

javascript工作需要1毫秒以上。所以只需添加“暂停1000”