2012-04-11 104 views
2

我们在我们的web application中使用此组件。单击命令不适用于元素

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

问题是我无法使用Selenium IDE记录此行为。 IDE创建一个命令,但是当我执行命令时什么也没有发生。甚至没有记录错误。

可能是什么问题?

回答

0

这可能是因为硒脚本启动太快。我猜你正在使用的组件会为所有按钮生成一堆HTML。如果脚本启动得太早,html可能还没有生成。尝试运行较慢的硒脚本。

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

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

+0

它不是因为执行速度。当页面完全加载时,我运行该命令。XPath也是正确的,我检查过它。 INITresting是当我执行ClickAt命令时,它可以工作的新按钮,但在剪切,粘贴和复制按钮上。 – user49126 2012-04-12 08:40:45

3

低速

使用XPath执行脚本识别类似的

clickAt | //div[text()='New'] 

元素要单击新建按钮

+0

是的这适用于新建按钮,但不适用于剪切,复制和粘贴按钮 – user49126 2012-04-12 08:35:04

+0

确实,在此帮助下,您可以单击新建并仅打印 – 2012-04-12 10:54:11

+0

您是否知道任何解决方法?如何点击其他人? – user49126 2012-04-12 11:04:08

0

怎么样,如果你点击IMG本身,而不是股利?例如:

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

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

+0

是的,它的确如此。它突出了正确的div。但点击事件不会触发。 – user49126 2012-04-19 17:06:22

0

当javascript将项目加载到页面时,IDE并不完美,因此可能需要人工协助。

您尝试等待元素加载之前尝试点击它吗?我可能会建议插入一个waitForElementPresent命令,如waitForElementPresent |尝试点击之前#toolbarObj。

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 
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(); 
    } 
} 
1

我不知道这会帮助,但它肯定帮助我

如果你必须输入任何文字和然后点击任何元素或按钮

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

二是 使用“类型”,然后按回车键,而不是在目标使用“的SendKeys”点击有你打字和值的字段必须有 “${KEY_ENTER}

如将帮助您更好地 第一种方法: The First Method

第二种方法: The Second Method

都工作对我来说幸运的

-2

将花费超过1毫秒的JavaScript工作。因此,只需添加像'暂停1000'