簡體   English   中英

硒如何繼續填充下一頁的數據?

[英]How to continue to fill the data in next page by selenium?

我想通過Selenium登錄。 整個過程分為 2 頁。

  • 電子郵件
  • 密碼

現在我可以在第一頁輸入密鑰。然后我應該進入下一頁(輸入密碼並單擊提交密鑰)。

但是,如果我只在一個類中添加4個鍵碼,則無法完成第二頁鍵輸入(密碼和提交)

我猜第一頁鍵輸入和第二頁鍵輸入之間缺少一些代碼。

public class Selenium {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {



WebDriver driver;
System.setProperty("webdriver.gecko.driver", "C:\\Users\\Downloads\\geckodriver-v0.10.0-win64\\wires.exe");
driver =new FirefoxDriver();


driver.get("https://mail.google.com");
driver.findElement(By.id("Email")).sendKeys("yourEmailId");//first page
driver.findElement(By.id("next")).click();//first page

driver.findElement(By.id("Passwd")).sendKeys("yourPassword");//next page
driver.findElement(By.id("signIn")).click();//next page
}

driver.get("https://mail.google.com");
driver.findElement(By.id("Email")).sendKeys("yourEmailId");//first page
driver.findElement(By.id("next")).click();//first page


/* What code should I add here?  */


driver.findElement(By.id("Passwd")).sendKeys("yourPassword");//next page
driver.findElement(By.id("signIn")).click();//next page
}

在找到此元素之前,嘗試設置可能 10 秒的隱式等待:-

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.findElement(By.id("Passwd")).sendKeys("yourPassword");
driver.findElement(By.id("signIn")).click();

或者設置顯式等待。 顯式等待是您定義的代碼,用於在進一步處理代碼之前等待特定條件發生。 在您的情況下,它是密碼輸入字段的可見性。

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("Passwd")));
element.sendKeys("yourPassword");

//Now click on sign in button 
driver.findElement(By.id("signIn")).click();//next page

解釋: selenium 找不到元素的原因是因為密碼輸入字段的id最初是Passwd-hidden 單擊“下一步”按鈕后,Google 首先驗證輸入的電子郵件地址,然后顯示密碼輸入字段(通過將 id 從Passwd-hidden更改為Passwd )。 因此,當密碼字段仍處於隱藏狀態時(即 Google 仍在驗證電子郵件 ID),您的網絡驅動程序將開始搜索仍處於隱藏狀態的 id Passwd的密碼輸入字段。 因此,您應該等到它變得可見。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM