Selenium webdriver 如何使用Selenium创建Gmail帐户,我遇到了月份和国家/地区下拉列表的问题

Selenium webdriver 如何使用Selenium创建Gmail帐户,我遇到了月份和国家/地区下拉列表的问题,selenium-webdriver,Selenium Webdriver,我想用select类选择Gmail的month和country下拉列表,但它显示的错误如下 元素应为select,但为div 我处理actions类,但不处理select类。我尝试使用x路径、id和类,但没有成功。我是硒的新手 这是我的密码 d.get("https://accounts.google.com/SignUp?continue=https%3A%2F%2Faccounts.google.com%2FManageAccount"); d.manage().window().m

我想用select类选择Gmail的month和country下拉列表,但它显示的错误如下

元素应为select,但为div

我处理actions类,但不处理select类。我尝试使用x路径、id和类,但没有成功。我是硒的新手

这是我的密码

d.get("https://accounts.google.com/SignUp?continue=https%3A%2F%2Faccounts.google.com%2FManageAccount");
    d.manage().window().maximize();
    Select s=new Select(d.findElement(By.id("BirthMonth")));
    s.selectByIndex(5);
    System.out.println("may slected...");
正如我在“月份”下拉框中看到的,它实际上不是一个选择元素,您应该尝试使用以下操作:

WebDriverWait wait = new WebDriverWait(d, 10);
Actions builder = new Actions(d);

WebElement selectMonth = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//div[@title = 'Birthday']")));
builder.mouse.mouseMove(((Locatable)selectMonth).coordinates);      
selectMonth.click();

WebElement option = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//div[text() = 'May']")));
builder.mouse.mouseMove(((Locatable)option).coordinates);   
option.click();
System.out.println("may slected...");
WebElement selectMonth = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//div[@title = 'Birthday']")));
builder.mouse.mouseMove(((Locatable)selectMonth).coordinates);      
selectMonth.click();

List<WebElement> allmonths = wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.cssSelector("span#BirthMonth > div.goog-menu.goog-menu-vertical")));
for(WebElement el : allmonths) {
            System.out.println(el.getText())
}
编辑:如果要打印所有月份,请单击“生日月”下拉列表,如下所示:

WebDriverWait wait = new WebDriverWait(d, 10);
Actions builder = new Actions(d);

WebElement selectMonth = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//div[@title = 'Birthday']")));
builder.mouse.mouseMove(((Locatable)selectMonth).coordinates);      
selectMonth.click();

WebElement option = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//div[text() = 'May']")));
builder.mouse.mouseMove(((Locatable)option).coordinates);   
option.click();
System.out.println("may slected...");
WebElement selectMonth = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//div[@title = 'Birthday']")));
builder.mouse.mouseMove(((Locatable)selectMonth).coordinates);      
selectMonth.click();

List<WebElement> allmonths = wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.cssSelector("span#BirthMonth > div.goog-menu.goog-menu-vertical")));
for(WebElement el : allmonths) {
            System.out.println(el.getText())
}

但是请注意,如果目的是创建大量GMail帐户,Google将很快关闭这些尝试,并开始返回服务器错误或应用IP块。

不建议或不可能使用selenium之类的自动脚本创建。我建议按照以下步骤在输入文件中使用多个帐户

而不是每次都创建多个测试帐户,这在谷歌的政策下是不可能的

而不是中提到的用户策略

myaccount@gmail.com


我的帐户+今天\日期_time@gmail.com

我尝试了actions,从下拉列表中获得了特定的值,但我想打印从1月到12月下拉列表中的所有值非常感谢。。我真的很高兴@Saurabh GaurThis非常有用,但我想知道帮助初学者在GMail网站上创建自动帐户是否明智。一个问题解决了,又产生了许多其他问题?@halfer对不起……但我不明白你所说的其他问题是什么意思??我想你没有抓住重点,也许我太狡猾了!我想知道你是否会考虑不帮助潜在的垃圾邮件发送者?我想,OP总是有可能有另一个用途……错误信息清楚地表明,浏览器控制台中的HTML标记不是“选择”元素类型。我希望你会发现,如果你试图自动创建大量Gmail帐户,谷歌会很快关闭你,并将开始返回服务器错误或应用IP块。