[使用Selenium Web驱动程序登录yahoo邮件时如何单击下一步按钮

问题描述 投票:0回答:2

我正在尝试通过Yahoo邮件登录。无法继续单击“下一步”按钮。我找不到我想念的地方。请指导我。谢谢。

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class FirstScript {
    public static void main (String[] args) {
        System.setProperty("webdriver.chrome.driver","C:\\Selenium\\selenium-java-            3.141.59\\chromedriver_win32\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.manage().deleteAllCookies();
        driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.get("https://login.yahoo.com/");                                                                             driver.findElement(By.name("username")).sendKeys("[email protected]"); //name locator for text box
        WebElement searchIcon = driver.findElement(By.name("signin"));//name locator for next button
        searchIcon.click();
        driver.findElement(By.name("password")).sendKeys("testing"); //name locator for text box
        WebElement searchIcon2 =     driver.findElement(By.name("verifyPassword"));//name locator for next button
        searchIcon2.click();
    }
}
java selenium xpath css-selectors webdriverwait
2个回答
0
投票

您的脚本是正确的。您只需要等待,直到屏幕重定向到下一页即可。修改后的脚本(包括显式等待)如下;

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class sample{
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver","<driverlocation>");
        WebDriver driver = new ChromeDriver();
        driver.manage().window().maximize();
        WebDriverWait wait = new WebDriverWait(driver,30);
        driver.manage().deleteAllCookies();
        driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.get("https://login.yahoo.com/");
        driver.findElement(By.name("username")).sendKeys("[email protected]"); // name locator for text box
        WebElement searchIcon = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id=\"login-signin\"]")));// name locator for next button
        searchIcon.click();
        WebElement password = wait.until(ExpectedConditions.presenceOfElementLocated(By.name("password")));
        password.sendKeys("testing"); // name locator for text box
        WebElement searchIcon2 = driver.findElement(By.name("verifyPassword"));// name locator for next button
        searchIcon2.click();
    }
}`

0
投票

首先将字符序列发送到电子邮件地址字段,在按钮上调用文本为[[Next的click(),将字符序列发送到Password字段,然后再次调用[按钮上的文本为Next的C0],则需要为click()引入WebDriverWait,并且可以使用以下定位器策略:

  • 代码块:

    elementToBeClickable()

  • 浏览器快照:
  • System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe"); ChromeOptions options = new ChromeOptions(); options.addArguments("start-maximized"); options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation")); options.setExperimentalOption("useAutomationExtension", false); WebDriver driver = new ChromeDriver(options); driver.navigate().to("https://login.yahoo.com/"); new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.phone-no#login-username"))).sendKeys("ravi"); driver.findElement(By.cssSelector("input#login-signin")).submit(); new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div#password-container>input"))).sendKeys("test123"); ((JavascriptExecutor)driver).executeScript("arguments[0].click();", driver.findElement(By.xpath("//button[@id='login-signin']")));

    © www.soinside.com 2019 - 2024. All rights reserved.