为什么Gmail会更改某些元素的id元素?

尼科

这是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();
}
安德烈·埃格罗夫(Andrey Egorov)

因此,正如我在评论(已被删除)中所写的那样,xpath不是一个好习惯。如果您需要单击“撰写”按钮,并且避免在选择器中使用ID,则可以使用下一个选择器在页面上找到“撰写” btn

driver.FindElement(By.Css(".aic div[role='button']")).click();

对我来说效果很好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么相对定位会导致元素下方的空间?

来自分类Dev

当以%或px为单位定义块元素的宽度时,为什么布局会更改

来自分类Dev

为什么添加最小/最大属性会更改Chrome中数字HTML5输入元素的宽度?

来自分类Dev

为什么DOM更改后IE会丢弃DOM元素的innerHTML / children?

来自分类Dev

为什么填充空间会丢失在我的`select`元素中?

来自分类Dev

为什么这些内联块元素会产生额外的宽度?

来自分类Dev

为什么边际子元素会影响身体元素?

来自分类Dev

为什么div会采用浮动元素的尺寸?

来自分类Dev

当我仅尝试更改一个列表元素时,为什么我的代码会更改多个列表元素?

来自分类Dev

为什么更改list [i]会影响列表,但更改元素不会在`for中,对于inputList中的元素呢?

来自分类Dev

为什么JavaScript“ style.display ='block'会更改元素的宽度?

来自分类Dev

为什么xsl:for-each-group缺少某些元素?

来自分类Dev

为什么更改元素的宽度会影响其同级?

来自分类Dev

为什么Selenium无法在某些站点上找到元素?

来自分类Dev

当我更改复制词典之一时,为什么原始词典的元素也会更改?

来自分类Dev

为什么在开发人员工具中某些HTML元素会变灰?

来自分类Dev

为什么在循环中更改数组元素会删除数组

来自分类Dev

为什么Google Chrome检查器会向随机的html元素添加奇怪的id属性?

来自分类Dev

为什么添加最小/最大属性会更改Chrome中数字HTML5输入元素的宽度?

来自分类Dev

为什么更改html元素的ID,还运行带有旧ID的点击绑定

来自分类Dev

为什么更改数组中的复制元素会影响原始元素?

来自分类Dev

为什么静态元素会移动?

来自分类Dev

为什么某些页面上没有打印元素?

来自分类Dev

为什么引导程序不显示我的某些元素?

来自分类Dev

为什么我的XSD无法验证某些元素?

来自分类Dev

为什么修改ArrayList中一个元素的值会更改另一个元素的值?

来自分类Dev

为什么for循环会更改for循环中的列表后跳过第一个元素?

来自分类Dev

为什么 Java Hash 映射的元素会覆盖之前的元素?

来自分类Dev

为什么Selenium webdriver无法选择某些元素?

Related 相关文章

  1. 1

    为什么相对定位会导致元素下方的空间?

  2. 2

    当以%或px为单位定义块元素的宽度时,为什么布局会更改

  3. 3

    为什么添加最小/最大属性会更改Chrome中数字HTML5输入元素的宽度?

  4. 4

    为什么DOM更改后IE会丢弃DOM元素的innerHTML / children?

  5. 5

    为什么填充空间会丢失在我的`select`元素中?

  6. 6

    为什么这些内联块元素会产生额外的宽度?

  7. 7

    为什么边际子元素会影响身体元素?

  8. 8

    为什么div会采用浮动元素的尺寸?

  9. 9

    当我仅尝试更改一个列表元素时,为什么我的代码会更改多个列表元素?

  10. 10

    为什么更改list [i]会影响列表,但更改元素不会在`for中,对于inputList中的元素呢?

  11. 11

    为什么JavaScript“ style.display ='block'会更改元素的宽度?

  12. 12

    为什么xsl:for-each-group缺少某些元素?

  13. 13

    为什么更改元素的宽度会影响其同级?

  14. 14

    为什么Selenium无法在某些站点上找到元素?

  15. 15

    当我更改复制词典之一时,为什么原始词典的元素也会更改?

  16. 16

    为什么在开发人员工具中某些HTML元素会变灰?

  17. 17

    为什么在循环中更改数组元素会删除数组

  18. 18

    为什么Google Chrome检查器会向随机的html元素添加奇怪的id属性?

  19. 19

    为什么添加最小/最大属性会更改Chrome中数字HTML5输入元素的宽度?

  20. 20

    为什么更改html元素的ID,还运行带有旧ID的点击绑定

  21. 21

    为什么更改数组中的复制元素会影响原始元素?

  22. 22

    为什么静态元素会移动?

  23. 23

    为什么某些页面上没有打印元素?

  24. 24

    为什么引导程序不显示我的某些元素?

  25. 25

    为什么我的XSD无法验证某些元素?

  26. 26

    为什么修改ArrayList中一个元素的值会更改另一个元素的值?

  27. 27

    为什么for循环会更改for循环中的列表后跳过第一个元素?

  28. 28

    为什么 Java Hash 映射的元素会覆盖之前的元素?

  29. 29

    为什么Selenium webdriver无法选择某些元素?

热门标签

归档