无法使用Selenium Webdriver在Gmail中单击链接

时间:2013-05-16 03:26:17

标签: selenium-webdriver

我是学习者。 我正在尝试使用Selenium Webdriver自动执行Gmail的注销功能但无法这样做..

注销时有两个阶段,首先单击顶部的右侧链接,如果出现该框,则单击“注销”。我无法这样做。

<span id="gbi4t" style="max-width: 76px; text-align: left;">Mahmood Ali</span>

<a id="gb_71" class="gbqfbb" href="?logout&hl=en&hlor" onclick="gbar.logger.il(9,{l:'o'})" role="button" target="_top">Sign out</a>

这是我的xpath

//*[@id="gbi4t"] -> Clicking that top to get the logout pop up

//*[@id="gb_71"] -> To logout the gmail application

我试过像

driver.findElement(By.id("gbi4t")).click();   OR

driver.findElement(By.xpath("//*[@id='gbi4t']")).click();

driver.findElement(By.id("gb_71")).click();  OR

driver.findElement(By.xpath("//*[@id='gb_71']")).click();

有些想法吗?

4 个答案:

答案 0 :(得分:0)

实际上<span>未被识别为元素。

您需要在其上使用<a id="gbg4" ...>click(),等待弹出窗口并点击<a id="gb_71" class="gbqfbb" ...>即可退出。

我让你编码,因为你需要实践:P

告诉我发生了什么事。

建议:

我建议您使用cssSelector()

为什么?因为它比xpath快,当像google或其他网页使用动态值用于id / name时,最好使用class属性,cssSelector()比其他更好。

但有时你会使用xpath来查找一个“取消”作为内部文本的元素(例如:<a>cancel</a>

cssSelector() reference

答案 1 :(得分:0)

您还可以尝试以下操作:

driver.find_element(:id, "gbgs4dn").click
driver.find_element(:id, "gb_71").click

这对我有用。

答案 2 :(得分:0)

这段代码对我来说当然有用:

  // (after logging to google.com)
WebDriverWait wait = new WebDriverWait(driver, timeoutInSeconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("gbi4t")));
  //open overlay
driver.findElement(By.id("gbi4t")).click();  
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("gb_71")));
  //press logout
driver.findElement(By.id("gb_71")).click();

答案 3 :(得分:0)

Heres一个解决的例子::

package testme;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;


public class testexample {

    public static WebDriver driver;
    public static WebElement element;

    public static void main(String args[]) throws InterruptedException {
        //setting the chrome driver
        System.setProperty("webdriver.chrome.driver", "C:/Users/workspace/Downloads/chromedriver.exe");
        driver = new ChromeDriver();


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

        element =driver.findElement(By.linkText("Sign in"));
        element.click();
        Thread.sleep(1000);
        element = driver.findElement(By.id("Email"));
        element.sendKeys("yourusername@gmail.com");
        element = driver.findElement(By.id("Passwd"));
        element.sendKeys("yourpassword");
        element.submit();

        Thread.sleep(1000);
        //click on the logout link step 1
        element = driver.findElement(By.xpath("//*[@id='gb']/div[1]/div[1]/div/div[3]/div[1]/a"));
        element.click();
        // click on actual logout button step 2
        element = driver.findElement(By.id("gb_71"));
        element.click();
        //closing the webdriver window after successful completion of the test
        driver.close();
        }
    }