【问题标题】:selenium - unable to locate the COMPOSE button in gmailselenium - 无法在 gmail 中找到 COMPOSE 按钮
【发布时间】:2015-07-12 16:04:30
【问题描述】:

我正在尝试登录我的 gmail,撰写电子邮件并使用 gmail 发送。我已经编写了以下代码,但无法找到 COMPOSING 按钮单击。

package Selenium;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Email {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        WebDriver driver = new FirefoxDriver();
        driver.get("https://www.google.co.in");

        driver.manage().timeouts().pageLoadTimeout(20, TimeUnit.SECONDS);

        driver.findElement(By.xpath("/html/body/div/div[3]/div[1]/div/div/div/div[1]/div[2]/a")).click();

        driver.manage().timeouts().pageLoadTimeout(20, TimeUnit.SECONDS);

        driver.findElement(By.id("Email")).sendKeys("abhilash.rout8@gmail.com");
        driver.findElement(By.id("Passwd")).sendKeys("password");
        driver.findElement(By.id("signIn")).click();

        driver.manage().timeouts().pageLoadTimeout(2, TimeUnit.MINUTES);
        driver.findElement(By.xpath("//div[contains(text(),'COMPOSE')]")).click();

        driver.findElement(By.xpath("/html/body/div[14]/div/div/div/div[1]/div[2]/div[1]/div[1]/div/div/div/div[3]/div/div/div[4]/table/tbody/tr/td[2]/form/div[2]/div")).sendKeys("abhilash.rout8@gmail.com");

        driver.findElement(By.id("1ys")).sendKeys("Hello");
        driver.findElement(By.id("1zu")).sendKeys("Selenium Email");
        driver.findElement(By.id("1yi")).click();
    }
}

我在(By.xpath("//div[contains(text(),'COMPOSE')]")).click(); 收到错误

我也尝试通过绝对路径和 css 选择器找到该元素。当 Gmail 仍在加载电子邮件页面时,控制台中会出现此错误,尽管我已经让它等待 2 分钟,我可以看到它在页面尚未加载时尝试执行下一行。

【问题讨论】:

    标签: java selenium xpath


    【解决方案1】:

    您尝试使用:

    WebElement link = driver.findElement(By.linkText("COMPOSE"));
    

    只是一个建议:

    使用基本 html 视图自动化 Gmail 比使用常规视图容易得多。当您尝试在常规视图中撰写电子邮件时,弹出的小窗口有一个动态生成的 id。在基本的 html 视图中不会出现这种情况。您可以通过启动以下 url 在基本 html 视图中加载 gmail:

    https://mail.google.com/mail/u/0/h/s32qz81kdosc/?zy=h&f=1

    登录上述网址后,您可以通过以下方式找到撰写电子邮件的链接:

    wait.until(ExpectedConditions.presenceOfElementLocated(By.linkText("Compose Mail")));
    WebElement lnkComposeMail = driver.findElement(By.linkText("Compose Mail"));
    lnkComposeMail.click();
    

    【讨论】:

      猜你喜欢
      • 2021-10-01
      • 2020-09-26
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-28
      相关资源
      最近更新 更多