我們在我們的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