这是Gmail中的一个元素,确切地说是“撰写”按钮。看一下id,当我没有未读消息时,它是“:il”。
<div id=":il" class="aic">
<div class="z0">
<div class="T-I J-J5-Ji T-I-KE L3" tabindex="0" role="button" style="-moz-user-select: none;" gh="cm">COMPOSE</div>
</div>
</div>
现在,我刚刚给自己发送了一封电子邮件,然后注销我的帐户并再次登录。当我检查元素时,id已更改为“:3l”。
<div id=":3l" class="aic">
<div class="z0">
<div class="T-I J-J5-Ji T-I-KE L3 T-I-JO" tabindex="0" role="button" style="-moz-user-select: none;" gh="cm">COMPOSE</div>
</div>
</div>
然后,我阅读了邮件,注销并再次登录。当我阅读元素时,我得到的是原始ID“:il”。
为什么Gmail会更改某些元素的id元素?我正在使用WebDriver和Java,这使我发疯。可能是我必须更改查找此元素的方式。
最好的祝福!
添加了我的测试代码:
public static void main(String[] args)
{
WebDriver driver;
String baseUrl;
driver = new FirefoxDriver();
baseUrl = "https://www.google.com.ar/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get(baseUrl + "/?gfe_rd=cr&ei=Tf_YVKv1G6yB8Qe_24HYDA&gws_rd=ssl");
driver.findElement(By.linkText("Gmail")).click();
driver.findElement(By.id("Passwd")).clear();
driver.findElement(By.id("Passwd")).sendKeys("Not neccesary :D");
driver.findElement(By.id("Email")).clear();
driver.findElement(By.id("Email")).sendKeys("Not_neccesary_:D");
driver.findElement(By.id("signIn")).click();
//APARENTLY THERE ARE PROBLEMS WHEN I HAVE MESSAGES UNREADED
driver.findElement(By.xpath("//div[.='COMPOSE']")).click();
driver.findElement(By.id(":uv")).sendKeys("Not_neccesary_:[email protected]");
driver.findElement(By.id(":ul")).sendKeys("Test");
driver.findElement(By.id(":vn")).sendKeys("aaaaaaaaaaa");
driver.findElement(By.id(":ub")).click();
driver.close();
}
因此,正如我在评论(已被删除)中所写的那样,xpath不是一个好习惯。如果您需要单击“撰写”按钮,并且避免在选择器中使用ID,则可以使用下一个选择器在页面上找到“撰写” btn
driver.FindElement(By.Css(".aic div[role='button']")).click();
对我来说效果很好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句