什么是唯一标识符,并如何使用它来选择?

2024-06-08 22:29:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Selenium,我正在尝试自动化网站上的任务,为了选择一个项目,我必须使用以下命令:

select = driver.find_element_by_*whatever* 

但是,所有什么find_element_by_id、按名称、按标记名等都不可用或由多个项共享。似乎每个项目唯一的一个是“数据id”编号,但据我所知,没有find_element_by_data_id函数。你知道吗

我可以得到一个唯一的标识符,如下所示:

div.item:nth-child(453)

它似乎适合,因为它不会改变,当我重新加载页面,是唯一的只有一个项目。你知道吗

如何使用此唯一标识符选择对象?或者,你能建议我如何选择所需的项目?你知道吗

以下是与对象相关的HTML:

    ...
</div>
<div data-id="3817366931"
     data-slot="secondary"
     data-classes="pyro"
     data-content="Level: 30<br/>"
     data-appid="440"
     class="item hoverable quality6   app440"
     style="opacity:1;background-image:url(https://steamcdn-a.akamaihd.net/apps/440/icons/c_drg_manmelter.b76b87bda3242806c05a6201a4024a560269e805.png);"
     data-title="Manmelter"
     data-defindex="595">
</div>
<div data-id="3820690816"
     data-slot="primary"
     data-classes="pyro"
     data-content="Level: 10<br/>"
     data-appid="440"
     class="item hoverable quality6   app440"
     style="opacity:1;background-image:url(https://steamcdn-a.akamaihd.net/apps/440/icons/c_drg_phlogistinator.99b83086e28b2f85ed4c925ac5e3c6e123289aec.png);"
     data-title="Phlogistinator"
     data-defindex="594">
</div>
<div data-id="3819377317"
     data-slot="primary"
     data-classes="pyro"
     data-content="Level: 10<br/>"
     data-appid="440"
     class="item hoverable quality6   app440"
     style="opacity:1;background-image:url(https://steamcdn-a.akamaihd.net/apps/440/icons/c_drg_phlogistinator.99b83086e28b2f85ed4c925ac5e3c6e123289aec.png);"
     data-title="Phlogistinator"
     data-defindex="594">

所以下面两个盒子里的东西是一样的。最上面的那个不一样。我想知道如何选择第二个框中的项目。你知道吗


Tags: 项目brdividdatabyelementcontent
2条回答

我不确定基于这样的html结构自动化场景有多容易。我建议您与开发人员交谈,看看他们是否可以向每个父级添加某种id div,否则选择器将太脆弱。我还看到data-id属性在任何情况下都是唯一的,因此如果您事先知道id,这可能是您的最佳选择。如果您没有任何其他选项,那么cssnth-child()函数是下一个最可靠的机制。但是,如果那样的话,你必须了解父母。nth-child()解释得很好here

另一方面,如果想要找到第二个data-slot,可以使用以下xpath

//div[@data-slot='primary'][2]

相关问题 更多 >