2016-08-02 71 views
1

Nach viel R & D auf google und StackOverflow ich schreibe diese Abfrage .. Ich möchte den Benutzernamen und das Passwort auf Facebook mit ONLY Klassenname, ich nicht tun wollen Typ verwenden, Name, ID für dieses .. ich mit allen möglichen Optionen ausprobiert, aber kein Glück dies die Lösung für jemand zur Verfügung stellen kann .. hier ist mein Code ..Wie man Benutzername und Passwort in Facebook mit Klassennamen eingeben

package login; 

import org.testng.annotations.Test; 

import java.util.concurrent.TimeUnit; 

import org.testng.annotations.*; 

import org.openqa.selenium.*; 

import org.openqa.selenium.firefox.FirefoxDriver; 

import org.openqa.selenium.chrome.ChromeDriver; 

public class MercuryLogin1 { 

    private WebDriver driver; 

    private String baseUrl; 

    @BeforeClass(alwaysRun = true) 

    public void setUp() throws Exception { 

    System.setProperty("webdriver.chrome.driver","C:\\Automation_Info\\Selenium\\chromedriver_win32\\chromedriver.exe"); 

    System.setProperty("webdriver.gecko.driver", "C:\\Automation_Info\\Selenium\\geckodriver-v0.9.0-win64\\geckodriver.exe"); 

    driver = new ChromeDriver(); 

    baseUrl = "http://facebook.com/"; 

    //driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 

    } 

    @Test 

    public void testMercuryLogin1() throws Exception { 

    driver.get(baseUrl + "/"); 

    driver.findElement(By.xpath("//input[@class=inputtext][0]")).sendKeys("tutorial"); 

    driver.findElement(By.xpath("//input[@class='nputtext][1]")).sendKeys("tutorial"); 

    } 

    @AfterClass(alwaysRun = true) 

    public void tearDown() throws Exception { 

    //driver.quit(); 

    } 

} 

Antwort

0

Wenn Sie Benutzer eingeben möchten Name und Passwort mit ihrer Klasse, versuchen Sie es mit By.xpath(): -

public void testMercuryLogin1() throws Exception { 

    driver.get(baseUrl + "/"); 

    WebDriverWait wait = new WebDriverWait(driver, 10); 

    WebElement user = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("(.//input[@class = 'inputtext'])[1]"))) 

    user.sendKeys("tutorial"); 

    WebElement pass = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("(.//input[@class = 'inputtext'])[2]"))) 

    pass.sendKeys("tutorial"); 

    } 

Hinweis: - Ich bin mir nicht sicher, warum Sie Wert eingeben werden mit class Name während es einfach mit By.id("email") und By.id("pass") betreten werden kann. Ich schlage vor, Sie aus der Performance-Perspektive mit By.id ist viel schneller als andere Locator. Wenn es möglich ist, sollte es zuerst Priorität haben.

Hoffe, es hilft ... :)

+0

Danke für die Info Saurabh, aber ich möchte nicht id oder Namen verwenden i nur Klassennamen verwenden wollte ... –

+0

@SantoshGaddam die Antwort mit Klasse aktualisiert. versuchen Sie es .. :) –

+0

@SantoshGaddam Aber ich schlage vor, Sie versuchen, 'By.id' hier zu verwenden, weil es viel schneller ist als mit anderen Locator ... :). –