2012-04-11 153 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'