首页 > 解决方案 > Python Selenium 查找带有动态 URL 的元素和带有少量 HTML 的名称

问题描述

嘿大家!今天我正在使用 Python 3 和 Selenium Web 驱动程序。我在按元素查找时遇到问题。这是HTML:

<a _ngcontent-pxc-c302="" class="name ng-star-inserted" href="/person/20d4a795d3fb43bdbee7e480df27b05b">michele regina</a>

目标是单击出现在列出的列中的名字。

每次页面刷新时名称都会更改。这带来了两个问题,链接文本是名称并且它会发生变化,并且链接也会随着每个不同的名称不断变化,除了说的部分/person/

我尝试了以下方法:

driver.find_element_by_css_selector("a.name ng-star-inserted").click()
driver.find_element_by_class_name("name ng-star-inserted").click()

这导致了一个不是可点击错误的元素。我还通过复制和粘贴从 Google 检查器复制的整个 XPath 来尝试 xpath ...大声笑

    driver.find_element_by_xpath('/html/body/app-root/app-container/div/div/tc-app-view/div/div/div/ng-component/mat-sidenav-container/mat-sidenav-content/div/div[2]/tc-person-table-container/tc-collapse-expand[1]/section/tc-person-table/table/tbody/tr[1]/td[2]/tc-person-table-cell/a').click()

它有时会起作用,这很奇怪,但我相信必须有更好的方法。非常感谢您!任何帮助表示赞赏!另外,我对 Python 很陌生,我对 HTML 的了解为零,而且我对堆栈也比较陌生!谢谢!

标签: pythonseleniumselenium-webdriverxpath

解决方案


从给定的完整 xpath 中,a您要查找的标签位于table, section, 中div。在这些标签中查找 id 并跟踪a.


推荐阅读