1

我是一个学习者。我正在尝试使用 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

4 回答 4

0

实际上,<span>不被认为是一个元素。

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

我让你编码,因为你需要练习:P

告诉我怎么了。

建议:

我可以向您建议的是使用cssSelector().

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

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

cssSelector() 参考

于 2013-05-16T08:52:39.757 回答
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();
于 2013-06-26T21:47:29.883 回答
0

您也可以尝试以下操作:

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

这对我有用。

于 2013-05-17T07:23:23.497 回答
0

这是一个解决的例子::

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();
        }
    }
于 2013-12-01T14:51:28.230 回答