2017-04-20 72 views
0

這是我走過的距離。但是,我很難自動執行下拉菜單中的文本。我試圖使用select語句自動化,但沒有成功。我使用選擇自動化Facebook註冊頁面,它的工作。以下是我的過程嘗試使用java中的selenium webdriver自動化gmail註冊頁面

package signUp; 

    import org.openqa.selenium.By; 
    import org.openqa.selenium.WebDriver; 
    import org.openqa.selenium.WebElement; 
    import org.openqa.selenium.firefox.FirefoxDriver; 
    import org.openqa.selenium.safari.SafariDriver; 
    import org.openqa.selenium.support.ui.Select; 
    import org.testng.annotations.Test; 

import java.util.List; 

/** 
* Created by san on 4/18/17. 
*/ 
public class LoginCredintials { 

    @Test 


    public void GoogleSignup(){ 

     System.setProperty("webdriver.gecko.driver", "/Users/abc/Downloads/geckodriver"); 
     WebDriver driver = new FirefoxDriver(); 
     String baseUrl = "https://accounts.google.com/SignUp?service=mail&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F&ltmpl=default"; 
     driver.get(baseUrl); 

     //By ID Text area1 
     WebElement text1 = driver.findElement(By.id("FirstName")); 
     text1.clear(); 
     text1.sendKeys("San "); 

     WebElement text2 = driver.findElement(By.id("LastName")); 
     text2.clear(); 
     text2.sendKeys("P"); 

     WebElement text3 = driver.findElement(By.xpath(".//*[@id='GmailAddress']")); 
     text3.clear(); 
     text3.sendKeys("s20077"); 

     WebElement text4 = driver.findElement(By.xpath(".//*[@id='Passwd']")); 
     text4.clear(); 
     text4.sendKeys("123abcdxy"); 

     WebElement text5 = driver.findElement(By.xpath(".//*[@id='PasswdAgain']")); 
     text5.clear(); 
     text5.sendKeys("123abcdxy"); 

     WebElement text6 = driver.findElement(By.id("BirthDay")); 
     text6.clear(); 
     text6.sendKeys("1"); 

     WebElement text7 = driver.findElement(By.id("BirthYear")); 
     text7.clear(); 
     text7.sendKeys("2000"); 

     WebElement text8 = driver.findElement(By.id("RecoveryPhoneNumber")); 
     text8.clear(); 
     text8.sendKeys("9222103436"); 

     WebElement text9 = driver.findElement(By.id("RecoveryEmailAddress")); 
     text9.clear(); 
     text9.sendKeys("[email protected].com"); 


     Select droplist1 = new Select(driver.findElement(By.id("gender"))); 
     droplist1.selectByVisibleText("Male"); 

     Select droplist2 = new Select(driver.findElement(By.id("BirthMonth"))); 
     droplist2.selectByVisibleText("March"); 

     Select droplist3 = new Select(driver.findElement(By.xpath(".//*[@id='CountryCode']/div"))); 
     droplist3.selectByVisibleText("United States"); 

     WebElement text10 = driver.findElement(By.id("submitbutton")); 
     text10.click(); 

    } 
} 

回答

0

期間使用的代碼,您必須編寫自定義方法對要求的下拉列表中選擇值,因爲它們不是標準的選擇組件。因此,您需要先點擊下拉菜單並等待選項出現。一旦選項可見,您可以點擊所需的選項。我爲此寫了一個通用方法'googleSelect':

package signUp; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.support.ui.ExpectedConditions; 
import org.openqa.selenium.support.ui.WebDriverWait; 
import org.testng.annotations.Test; 



/** 
* Created by san on 4/18/17. 
*/ 
public class LoginCredintials { 

    static WebDriver driver = null; 

    @Test 
    public void GoogleSignup(){ 

    System.setProperty("webdriver.gecko.driver", "/Users/abc/Downloads/geckodriver"); 

    driver = new FirefoxDriver(); 
    String baseUrl = "https://accounts.google.com/SignUp?service=mail&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F&ltmpl=default"; 
    driver.get(baseUrl); 

    //By ID Text area1 
    WebElement text1 = driver.findElement(By.id("FirstName")); 
    text1.clear(); 
    text1.sendKeys("San "); 

    WebElement text2 = driver.findElement(By.id("LastName")); 
    text2.clear(); 
    text2.sendKeys("P"); 

    WebElement text3 = driver.findElement(By.xpath(".//*[@id='GmailAddress']")); 
    text3.clear(); 
    text3.sendKeys("s20077444"); 

    WebElement text4 = driver.findElement(By.xpath(".//*[@id='Passwd']")); 
    text4.clear(); 
    text4.sendKeys("123abcdxy"); 

    WebElement text5 = driver.findElement(By.xpath(".//*[@id='PasswdAgain']")); 
    text5.clear(); 
    text5.sendKeys("123abcdxy"); 

    WebElement text6 = driver.findElement(By.id("BirthDay")); 
    text6.clear(); 
    text6.sendKeys("1"); 

    WebElement text7 = driver.findElement(By.id("BirthYear")); 
    text7.clear(); 
    text7.sendKeys("2000"); 

    WebElement text8 = driver.findElement(By.id("RecoveryPhoneNumber")); 
    text8.clear(); 
    text8.sendKeys("9222103436"); 

    WebElement text9 = driver.findElement(By.id("RecoveryEmailAddress")); 
    text9.clear(); 
    text9.sendKeys("[email protected]"); 


    googleSelect(By.id("Gender"), "Male"); 

    googleSelect(By.id("BirthMonth"), "March"); 

    googleSelect(By.xpath(".//*[@id='CountryCode']/div"), "United States"); 

    WebElement text10 = driver.findElement(By.id("submitbutton")); 
    text10.click(); 

    driver.quit(); 

} 


private static void googleSelect(By by, String text) { 
    driver.findElement(by).click(); 

    WebDriverWait wait = new WebDriverWait(driver, 10); 
    wait.until(ExpectedConditions.visibilityOf(
      driver.findElement(By.xpath("//div[@class='goog-menu goog-menu-vertical']//div[text()='" + text + "']")))); 
    driver.findElement(By.xpath("//div[@class='goog-menu goog-menu-vertical']//div[text()='" + text + "']")).click(); 

    } 
} 

試試上面的代碼,讓我知道,如果它適合你。

0

檢查頁面的html端。有時候複選框會寫成鏈接。所以你必須先點擊下拉菜單,然後點擊你必須選擇的元素。我可能不對,但如果你可以請檢查。

0

剛剛看到註冊頁面。看起來像是由div和li元素組成的,所以Select不起作用。我還看到,隱藏字段中的值被設置爲「HiddenGender」,「HiddenBirthMonth」。嘗試使用開發人員工具在Chrome上檢查元素以獲取所需的字段,並直接將值設置爲隱藏元素。希望這可以幫助。

相關問題