0

Gmail 的 COMPOSE 按钮的 id 是动态的。因此,当单击它时,Selenium IDE 会记录不同的 xpath,如下所示:

//div[@id=':lw']/div/div , //div[@id=':as']/div/div

使用 id 或 xpath 的替代方法是什么?

以下是 COMPOSE 按钮的 HTML:

<div class="aic" id=":as"><div class="z0"><div tabindex="0" role="button" class="T-I J-J5Ji L3 T-I-KE" style="-moz-user-select: none;" gh="cm">COMPOSE</div></div></div>
4

6 回答 6

2

在 Gmail 中使用下面的 COMPOSE 代码

ClickAt   |  //div[text()='COMPOSE']
于 2012-06-21T10:20:21.377 回答
1

您应该使用 CSS 类。它们不会在 Gmail 中更改,并且此解决方案不会依赖于区域设置。

对于撰写按钮,类别是“TI J-J5-Ji L3”。

使用 jQuery 的示例:

$('.T-I.J-J5-Ji.L3').live('click', function () {

     alert('Compose button clicked');

});
于 2012-06-25T15:20:29.723 回答
0

以下 WebDriver Java 代码应该可以正常工作:

driver.findElement(By.xpath("//div[text()='COMPOSE']")).click();

在 Java 中使用 Selenium RC:

selenium.click("//div[text()='COMPOSE']");
于 2013-03-22T05:03:55.703 回答
0

最好在这里使用Sikuli

Sikuli Script 自动执行您在屏幕上看到的任何内容。它使用图像识别来识别和控制 GUI 组件。当无法轻松访问 GUI 的内部或源代码时,它很有用。

于 2013-03-08T05:38:25.427 回答
0

google 对大多数元素使用动态 id。尝试使用“撰写”文本而不是使用 ID。

你可以使用这样的东西。Webelement element = driver.findElementByXpath("//div[text()='COMPOSE']"); 元素.click();

希望这有效!

于 2014-02-16T05:22:24.290 回答
0

我已经使用 Gmail 帐户通过 selenium 自动化成功发送了一个 Emil 下面是脚本,请找到它:

WebDriver driver = new FirefoxDriver();

String baseUrl = "http://www.google.co.in/";
selenium = new WebDriverBackedSelenium(driver, baseUrl);

driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
driver.findElement(By.xpath("//div[@id=':jb']/div[@class='z0']/div")).click(); // Compose

selenium.type("//div[@class='wO nr l1']//textarea[@name='to']", "vikramn@gmail.com"); // For To 
selenium.type("//div[@class='aoD az6']//input[@name='subjectbox']", "Wanted to SAY HI"); // For Subject
selenium.type("//div[@class='Ar Au']/div[@class='Am Al editable LW-avf']", "Hi Vikram");// For Message body
selenium.click("//div[@class='J-J5-Ji']/div[@class='T-I J-J5-Ji aoO T-I-atl L3']"); //send
于 2014-11-26T11:11:55.657 回答