python - 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 的了解为零,而且我对堆栈也比较陌生!谢谢!
解决方案
从给定的完整 xpath 中,a
您要查找的标签位于table
, section
, 中div
。在这些标签中查找 id 并跟踪a
.
推荐阅读
- ios - 在 Swift 中使用 SQLite 数据库的行填充 UITableView
- mysql - MYSQL:过滤多个日期和日期范围
- algorithm - 由向量构建的多边形 - 找到最大的区域,需要有序的顶点列表
- javascript - 如何判断promise是否有错误处理程序
- gtk - 是否有一个 GTK 构建器函数可以从我的程序创建一个 *.ui 文件,我可以将其发送到 Glade 进行处理
- python - 从日志文件中提取某些数据
- python - 如何使用字符串中的每个字符来表示列表中每个整数的结果?
- jsf - 如何通过 ab:commandButton 中的 oncomplete 函数验证我的表单是否有效?
- python-2.7 - 通过python蓝牙从Android获取文件
- windows - 使用 Http/2 和 Windows 身份验证(SPNEGO、Kerberos、Negotiate)在 Windows 上卷曲