gpt4 book ai didi

html - 为什么Gmail会改变某些元素的id元素?

转载 作者:行者123 更新时间:2023-12-05 04:16:15 25 4
gpt4 key购买 nike

这是 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_:D@gmail.com");
driver.findElement(By.id(":ul")).sendKeys("Test");
driver.findElement(By.id(":vn")).sendKeys("aaaaaaaaaaa");
driver.findElement(By.id(":ub")).click();

driver.close();
}

最佳答案

Gmail 不应使用 WebDriver 实现自动化。出于这个原因,他们故意使 id 动态化。你也为谷歌工作吗?您正在为谷歌测试 gmail 吗?如果不使用 WebDriver 来自动化 gmail 对我来说没有意义而且只是浪费时间。

您是否在您的应用程序中测试发送电子邮件的内容并且您想要确保电子邮件已发送、您想要验证内容或可能是点击链接或其他什么?做这些事情的最好方法是在后台使用像 JavaMail 这样的库和使用 Gmails pop3 服务器。这种方法将为您提供一致的结果,并且速度会快得多。您不必启动浏览器、与元素交互等。您还可以支持任何电子邮件提供商,而不仅仅是 Gmail,只要您有他们的 pop3 服务器详细信息。

查看我对类似问题的回答here

关于html - 为什么Gmail会改变某些元素的id元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28445319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com