【问题标题】:Unable to click on compose button in Gmail using selenium webdriver无法使用 selenium webdriver 在 Gmail 中单击撰写按钮
【发布时间】:2018-04-28 11:29:25
【问题描述】:

我的代码是:

public class LoginGmail{    
public static void main(String[] args) throws InterruptedException  {   
    System.setProperty("webdriver.chrome.driver","D:/selenium/chromedriver_win32/chromedriver.exe"); 

     WebDriver fd= new ChromeDriver();
     fd.get("https://www.google.com/intl/en_in/gmail/about/");
        Thread.sleep(5000);
        fd.manage().window().maximize();
        WebElement e1=fd.findElement(By.xpath("html/body/nav/div/a[2]"));
        e1.click();
        WebElement username = fd.findElement(By.xpath(".//*[@id='identifierId']"));
        username.sendKeys("sharmi.paul87@gmail.com");

        WebElement username_click = fd.findElement(By.xpath(".//*[@id='identifierNext']/content/span"));
        username_click.click();

        WebDriverWait wait = new WebDriverWait(fd,30);
        wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//input[@aria-label=\"Enter your password\"]")));
       WebElement password= fd.findElement(By.xpath("//input[@aria-label=\"Enter your password\"]"));
               password.sendKeys("pramilapaul");
        WebElement password_click = fd.findElement(By.xpath(".//*[@id='passwordNext']/content"));
        password_click.click();
    /*    --------------------------*/
        //fd.findElement(By.xpath("//div[contains(text(),'COMPOSE')]")).click();

        //WebElement button=fd.findElement(By.xpath("//div[contains(@id,':ir')]"));
        //WebElement buttton=fd.findElement(By.xpath("//div[@gh='cm']"));*/
        //WebElement button=fd.findElement(By.cssSelector(".aic div[role='button']"));
 //  button.click();

HTML 代码:

撰写

在上面的“/--/”中,任何 xpath 都不起作用。 有人可以帮忙吗? xpath 显示无法定位元素或复合类是禁止的错误。

【问题讨论】:

  • 添加HTML代码,这样我们就可以检查Xpath定位器了
  • 首先,“在上面的/--/”不是指向代码块的有用指针。告诉我们究竟是什么不起作用。其次,您的问题缺少minimal reproducible example。如果没有 HTML 代码来匹配您的脚本与脚本本身是完全没用的。看到这个:idownvotedbecau.se/nomcve
  • 撰写
  • @Sharmila 我已经写了一个答案,你可以检查一下吗?
  • 是的,但我回答了。它不工作。

标签: java selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

这个 xpath "//div[@id=':ii']/div/div".//div[normalize-space()='COMPOSE'] 为我单击撰写按钮。

试试这个

driver.findElement(By.xpath("//div[@id=':ii']/div/div"));

或者

driver.findElement(By.xpath(".//div[normalize-space()='COMPOSE']"));

我在 WATIR 中编写了下面给出的程序并检查了它,它可以工作,你可以在你的程序中使用相同的定位器并且你可以执行它。

b.goto("www.gmail.com")
b.a(:text, "Sign In").click
b.element(:id, "identifierId").send_keys "sharmi.paul87@gmail.com"
b.element(:css, "#identifierNext > content.CwaK9 > span.RveJvd.snByac").click
b.element(:name, "password").send_keys "pramilapaul"
b.element(:css, "span.RveJvd.snByac").click
b.element(:xpath, "//div[@id=':ii']/div/div").click

【讨论】:

  • 但它对我也不起作用。无法定位元素。
  • @Sharmila 我更新了另一个 xpath,你能检查一下吗?您的程序是否会引导您进入 gmail 页面?程序终止时你能看到撰写按钮吗?
  • 是的,我查过了。它显示无法定位元素。我成功登录了gmail,但找不到并单击撰写按钮。
  • @Sharmila 好的,我认为那是因为您的程序没有等待元素,包括隐式等待。在驱动变量(你的 fd)之后立即包含此语句driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
  • @Sharmila 你能接受我的答案吗,我的答案左上角有一个tic,你可以点击那里,这样我的答案就会被接受。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
  • 2021-11-09
  • 1970-01-01
  • 2016-03-02
  • 2020-03-16
  • 1970-01-01
  • 2019-02-04
相关资源
最近更新 更多