不同浏览器实例中元素的不同ID(python-selenium-chrome)

时间:2019-06-11 10:36:01

标签: html selenium xpath selenium-chromedriver

我通过实际浏览器(chrome)的inspect功能定位了硒元素,从没有任何问题。现在,我遇到了一个无法找到所定位元素的情况,我发现在我的硒铬实例中,该元素具有另一个ID,然后在我的“普通”元素中有一个ID,这就是为什么我找不到它。

其他一些元素也是这种情况,我无法发现图案。 在chrome的“ Ikognito”模式下,我得到的值与普通浏览器中的值相同,并且每次启动程序时,Selenium浏览器获得的id都相同。

有人对此有解释吗? 这是Web开发人员的普遍做法,在将来的项目中如何解决此问题?

我是否总是必须先运行我的硒浏览器,然后再从中提取元素ID?

1 个答案:

答案 0 :(得分:0)

尽管首选使用id定位元素,但并不是唯一的方法,way more options类似于:

后一种-XPath功能最强大,因为它几乎是一种编程语言。与其他选择器策略不同,XPath选择器完全了解DOM页面,可以查找所有属性,文本,父/子对象,遍历axes,如果不够用,可以使用functions and operators来精确选择任何元素是必需的。

关于动态ID-当页面不确定并且内容是动态的时,这是相当普遍的做法。从理论上讲,您可以要求应用程序开发人员提出一个自定义HTML attribute,该自定义user tracking可以用于自动化,甚至可以用于{{3}},但是如果出于某些原因,它是不可能的-您将必须定义另一种方式定位element.s