我们在web application。
中使用了这些组件在页面上,您可以看到包含一些按钮的工具栏。如果单击任何按钮,它会将日志写入日志栏。
问题是我无法使用Selenium IDE记录此行为。 IDE创建一个命令,但是当我执行命令时没有任何反应。甚至没有记录错误。
可能是什么问题?
答案 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}
”
例如,会更好地帮助你 第一种方法:
第二种方法:
幸运的是,两人都为我工作了
答案 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”