2012-04-11 5 views
2

Мы используем эти компоненты в нашем web application.Команда щелчка не работает над элементом

На странице вы можете увидеть панель инструментов, содержащую несколько кнопок. Если вы нажмете на любую из кнопок, она записывает журнал в журнал.

Проблема: я не могу записать это поведение с помощью Selenium IDE. IDE создает команду, но когда я выполняю команду, ничего не происходит. Даже ошибка не регистрируется.

В чем может быть проблема?

ответ

0

Возможно, сценарий selenium запускается слишком быстро. Я предполагаю, что компонент, который вы используете, генерирует кучу HTML для всех кнопок. Если скрипт запускается слишком рано, html, возможно, еще не был создан. Попробуйте запустить скрипт селена медленнее.

Также: Я думаю, что selenium использует XPath для доступа к элементам HTML на странице. Вы уверены, что сценарий selenium ссылается на правильный узел HTML? Вы можете проверить это, посмотрев сценарий selenium (это XML) и посмотрите, какой селектор XPath он использует для кнопки.

Также может случиться так, что селен может не иметь возможности запускать события кликов по не кликабельным целям (кнопки являются div), но я не думаю, что это так. Вы могли бы попробовать.

+0

Не из-за скорости выполнения. Я запускаю команду, когда страница полностью загружена. XPath также верен, я это проверил. INteresting - это когда я выполняю команду clickAt на кнопке New, которая работает, но на кнопках вырезания, вставки и копирования. – user49126

3

Выполнить скрипт на медленной скорости

Использование XPath для идентификации элементов, как

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

Чтобы нажать кнопку Создать

+0

Да, это работает для кнопки «Новый», но не работает на кнопках вырезания, копирования и вставки. – user49126

+0

Истинно, с помощью этого вы можете нажать «Создать» и «Только печать» –

+0

Знаете ли вы об этом? Как нажать на другие? – user49126

0

Что, если вы нажмете на самом IMG вместо DIV? Например:

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

Когда вы нажимаете «Найти» на Selenium IDE, действительно ли оно выделяет что-то на странице?

+0

Да, это так. Он подсвечивает правильный div. Но событие click не срабатывает. – user49126

0

IDE не подходит для записи при загрузке javascript на страницу, поэтому может потребоваться ручная помощь.

Вы пытались дождаться загрузки элемента, прежде чем пытаться нажать на него? Я мог бы предложить вставить команду waitForElementPresent, например waitForElementPresent | #toolbarObj перед попыткой щелчка.

1

я посетил сайт http://www.dhtmlx.com/docs/products/dhtmlxToolbar/samples/01_init/08_events.html

Я получил XPath с помощью XPATH проверки, как показано ниже:

Cut - id('toolbarObj')/x:div[5]/x:div[11]/x:div

Copy - id('toolbarObj')/x:div[5]/x:div[12]/x:div

Paste - 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мс ​​для яваскрипта работы. Так что просто добавьте как «пауза 1000»

Смежные вопросы