我们在我们的web application中使用此组件。单击命令不适用于元素
在页面上您可以看到一个包含一些按钮的工具栏。如果你点击任何按钮,它会在日志栏中写入日志。
问题是我无法使用Selenium IDE记录此行为。 IDE创建一个命令,但是当我执行命令时什么也没有发生。甚至没有记录错误。
可能是什么问题?
我们在我们的web application中使用此组件。单击命令不适用于元素
在页面上您可以看到一个包含一些按钮的工具栏。如果你点击任何按钮,它会在日志栏中写入日志。
问题是我无法使用Selenium IDE记录此行为。 IDE创建一个命令,但是当我执行命令时什么也没有发生。甚至没有记录错误。
可能是什么问题?
这可能是因为硒脚本启动太快。我猜你正在使用的组件会为所有按钮生成一堆HTML。如果脚本启动得太早,html可能还没有生成。尝试运行较慢的硒脚本。
另外:我认为selenium使用XPath来访问页面中的HTML元素。你确定硒脚本指的是正确的HTML节点吗?您可以通过查看selenium脚本(它是XML)来查看它,并查看它用于按钮的XPath选择器。
也可能是这样的情况是,硒可能无法触发非可点击目标上的点击事件(按钮是div),但我不认为是这种情况。你可以尝试。
怎么样,如果你点击IMG本身,而不是股利?例如:
//img[contains(@src, 'paste')]
当您点击Selenium IDE上的'查找'时,它实际上是否突出显示页面上的某些内容?
是的,它的确如此。它突出了正确的div。但点击事件不会触发。 – user49126 2012-04-19 17:06:22
当javascript将项目加载到页面时,IDE并不完美,因此可能需要人工协助。
您尝试等待元素加载之前尝试点击它吗?我可能会建议插入一个waitForElementPresent命令,如waitForElementPresent |尝试点击之前#toolbarObj。
我访问该网站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
这里是这样做的全码:
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();
}
}
我不知道这会帮助,但它肯定帮助我
如果你必须输入任何文字和然后点击任何元素或按钮
有两种方法 首先使用“sendKeys
”键入然后“点击”所需的元素将工作。 比如,对于flipkart.com
“型”不工作,但“sendKeys
”确实
二是 使用“类型”,然后按回车键,而不是在目标使用“的SendKeys”点击有你打字和值的字段必须有 “${KEY_ENTER}
”
如将帮助您更好地 第一种方法:
第二种方法:
都工作对我来说幸运的
将花费超过1毫秒的JavaScript工作。因此,只需添加像'暂停1000'
它不是因为执行速度。当页面完全加载时,我运行该命令。XPath也是正确的,我检查过它。 INITresting是当我执行ClickAt命令时,它可以工作的新按钮,但在剪切,粘贴和复制按钮上。 – user49126 2012-04-12 08:40:45