Comment cliquez dans une partie spécifique d'un Bouton à l'aide de Sélénium, de la liste d'options s'affiche?

<table id="ext-comp-1389" class="x-btn x-btn-text-icon " cellspacing="0" style="width: auto;">
<tbody class="x-btn-small x-btn-icon-small-left">
<tr>
<tr>
<td class="x-btn-ml">
<td class="x-btn-mc">
<em class="x-btn-split" unselectable="on">
<button id="ext-gen128" class="x-btn-text create" type="button">New</button>
</em>
</td>
<td class="x-btn-mr">
<i>&nbsp;</i>
</td>
</tr>
<tr>
</tbody>
</table>

Ci-dessus est la façon dont l'élément HTML est incorporé..! L'élément HTML est un "Nouveau" bouton avec un signe " + "à côté d'elle...Si je clique sur le" + "seulement, je peux accéder au menu des options, qui sont quelque chose comme, "D", "P", " T " et "U". Si je clique sur le bouton "Nouveau" ( Dans le code, c'est cette partie,
Nouveau
, rien n'est affiché comme le clic d'action, prend place sur le centre de... ci-Dessous est l'image du bouton...

Comment cliquez dans une partie spécifique d'un Bouton à l'aide de Sélénium, de la liste d'options s'affiche?

Voici le code que j'ai essayé...Pour les deux dernières heures,

    package com.hr.testpack;
import static org.junit.Assert.fail;
    import java.util.concurrent.TimeUnit;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
    import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverBackedSelenium;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
    import com.thoughtworks.selenium.*;

public class Classtest2 {

static Selenium selenium;
static final String HOST = "localhost";
static final int PORT = 4444;
static final String BROWSER = "*firefox";
static final String URL = "http://test.test.com";
private static int buttonwidth=42;//value got from firebug computation tab...
    private static final int Xoffset = (buttonwidth/2)+6;
private static final int Yoffset = 0;
private WebDriver driver;
private String baseUrl;

private StringBuffer verificationErrors = new StringBuffer();
//private StringBuffer verificationErrors = new StringBuffer();

@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "http://test.test.com/RMprojectProject";
    driver.manage().timeouts().implicitlyWait(90, TimeUnit.SECONDS);
}


@Test

public void testrr1() throws Exception
{


/*  Only Driver...Driver's way to open a URL*/

driver.get(baseUrl + "/");  


/* Webdriver Backed Selenium method- 

//*selenium = new WebDriverBackedSelenium(driver, baseUrl);

//*selenium.open("/");

//selenium.wait(15000); - Never use Wait, when Implicit wait is used


//WebDriver driver = ((WebDriverBackedSelenium) selenium).getWrappedDriver();

//Driver should be instantiated for using Driver's methods for

//SeleniumBackedWebdriver

     //Comments over
     */


driver.findElement(By.id("username")).clear();
driver.findElement(By.id("username")).sendKeys("[email protected]");

driver.findElement(By.id("password")).clear();
driver.findElement(By.id("password")).sendKeys("test124");


/* For normal Selenium RC and SeleniumBackedWebDriver method

selenium.type("username", "test");
selenium.type("password","test124");

*/

/* Internal Wait methods, which can be used for normal web
 * 
 * applications. Methods written in the end of the program
 * 
 * waitFor("xpath=.//*[@id='loginButton']/tbody/tr[2]/td[2]'");
 waitSecond(20); */


driver.findElement(By.xpath(".//*[@id='loginButton']/tbody/tr[2]/td[2]")).click();

//selenium.waitForPageToLoad("85000");

//selenium.waitForCondition("selenium.isElementPresent(\"xpath=.//*[@id='ext-gen165']/div/table/thead/tr/td[3]\")", "70000");



WebElement ele = driver.findElement(By.xpath("//*[@id='ext-gen128']"));
Actions build = new Actions(driver);

build.moveToElement(ele, Xoffset, Yoffset).click().build().perform();




    // selenium.waitForCondition("selenium.isElementPresent(\"xpath=//*[@id='ext-gen246']\")", "20000");

driver.findElement(By.xpath("//*[@id='ext-gen245']")).click();

  }



@After

public void tearDown() throws Exception{

    selenium.stop();
    //driver.quit();
    String verificationErrorString = verificationErrors.toString();
    if (!"".equals(verificationErrorString)) {
        fail(verificationErrorString);
    }
}

private boolean isElementPresent(By by) {
    try {
        driver.findElement(by);
        return true;
    } catch (NoSuchElementException e) {
        return false;
    }
}

/* The Below methods can be used, for page loading/waits in 
 * 
 * normal web applications...waitFor(seconds),when called in
 * 
 * the application, the wait happens...useful in occasions

public void waitFor(String locator) throws Exception {
    for (int second = 0;; second++) {
        if (second >= 60)
            fail("timeout");
        try {
            if (selenium.isVisible(locator))
                break;
        } catch (Exception e) {
        }
        Thread.sleep(1000);
    }
}

public void waitSecond(int n) throws Exception {
    for (int second = 0;; second++) {
        if (second >= 60)
            fail("timeout");
        try {
            if (second > n - 1)
                break;
        } catch (Exception e) {
        }
        Thread.sleep(1000);
    }
}

*/

Code est arriver exécuté avec succès et cas de test est une réussite, mais l'élément qui doit être vu, lors d'un clic sur le bouton " + " ne sont pas vus!

Je ne suis pas sûr de ce que vous essayez de faire, mais je vous suggère d'utiliser le sélénium actions pour cliquer sur les boutons. Pour plus d'informations sur les Actions de la classe selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/interactions/Actions.html
J'ai ajouté une photo du bouton et voici l'histoire..Quand je clique sur le bouton Nouveau dans le milieu ou dans tout autre endroit, aucun des événements qui ont lieu. Quand je clique sur le"+", la liste des options sont affichées, 'D', 'P', 'T', 'U'...Maintenant, je suis conscient d'Actions, mais j'aimerai voir un code en direct de la façon dont il fonctionne...j'ai eu quelques erreurs, quand j'ai utilisé une cliquez sur l'événement à l'intérieur de celui-ci ... et comment donner de la valeur de décalage pour l'événement click, pour la position...Si vous pouvez fournir un exemple de la façon dont vous pouvez résoudre l'affaire à l'aide de la méthode, il sera utile pour moi..
Votre code est un désordre chaud, s'il vous plait, essayez de coller uniquement le code qui importe à la question. Vous ne devriez vraiment pas mélanger Selenium RC et Selenium WebDriver ensemble si vous n'avez pas une bonne raison de le faire. Aussi, dans l'une des anciennes versions de code, j'ai vu wait() méthode utilisée. Qui n' absolument ce n'est pas ce que vous pensez que cela fonctionne, il n'a même pas appartenir à du Sélénium API. Commencez lentement, apprendre à utiliser le Sélénium notions de base sur une simple page HTML. C'est la façon dont vous obtiendrez les résultats souhaités dès que possible.
oui le code est sale..! J'ai eu à faire le travail qui est attribué à...Si vous avez vu mes posts précédents, j'ai essayé un couple de choses sur le Washington Post et la soumission d'un Formulaire...Cependant, c'est un peu différent, difficile et difficile...j'espère essayer de terminer cette !:) J'ai modifié le code et la modification de la poste !
Je suis toujours à la modification du code...Devinez, SeleniumBackedWebDriver peut être une bonne option, dans le cas de certaines méthodes d'attente, où certains éléments ne sont pas correctement chargé...Quand je donne Implicitement attend pendant 90 secondes, aussi, l'événement click du bouton pour le "Nouveau" est prise en déclenchée pendant le chargement de la page elle-même...ce qui rend le sous-menu de l'élément de visibilité d'un moins de chance...mais, là encore, le cas de test est un succès...!! essayé de basculer le point d'arrêt, ne pouvait pas comprendre comment les cas de test peut passer...Donc, loin édité code sera là dans la question maintenant..

OriginalL'auteur Mannii88 | 2012-06-12