java - 使用 Selenium/Java 单击下拉菜单中的 Web 元素

标签 java selenium

我正在尝试填写表格来创建 Gmail 帐户。

package seleniumpackage;

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;

public class HoverTest {
    public static void main(String[] args) throws InterruptedException{
        WebDriver driver = new FirefoxDriver();
        driver.manage().window().maximize();

        driver.get("http://www.gmail.com");
        Thread.sleep(2000);

        driver.findElement(By.linkText("Utwórz konto")).click();
        Thread.sleep(2000);

        driver.findElement(By.xpath("//*[@id='BirthMonth']/div[1]/div[2]")).click();
        Thread.sleep(2000);

        // Neither this works
        //driver.findElement(By.xpath("//*[@id=':5']/div")).click();

        // Nor that
        WebElement HoverMonth = driver.findElement(By.xpath("//div[contains(@class, 'goog-menuitem-content') and text()='Maj']"));
        Actions action = new Actions(driver);
        action.moveToElement(HoverMonth).perform();
        Thread.sleep(2000);
        action.click(HoverMonth).perform();

    }
}

问题是在下拉菜单中单击月份。

在第二种方法中,驱动程序正确地将鼠标悬停在特定月份上,但它不会单击它,这会导致“Miesiąc”而不是“Maj”。将 xpath 传递到特定月份也不起作用。

最佳答案

您必须先单击“生日”下拉列表,然后单击所需的月份。我刚刚尝试了这段代码,它有效。

driver.get("https://accounts.google.com/b/0/SignUp?service=mail");
driver.findElement(By.cssSelector("div[title='Birthday']")).click();
driver.findElement(By.id(":6")).click();

其中“:6”是第 6 个月。

关于java - 使用 Selenium/Java 单击下拉菜单中的 Web 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33289743/

相关文章:

java - 为java创建词法分析器

java - 通过 I.P. 连接到 Derby 地址失败

java - Jenkins 中的 Selenium 测试失败(等待找到的元素存在几秒后超时),但在本地它工作正常

java - Web 元素未被包含 Selenium WebDriver Java 文本的 Xpath 识别

java - 尝试编码 VBox 子类时发生 IllegalAnnotationExceptions

java - 构建通过 pop3 拉取 emai 的 Web 邮件客户端时存在哪些类型的编码/图像/格式问题

java - 如何使用 mockito 模拟 webdriver?

python - 在运行 Python 的 selenium webdriver 时传递参数

Selenium click()方法

java - Tomcat 9.027 : port out of range