python - 查找并单击基于 @onclick w/ Selenium 的元素
问题描述
我正在尝试在 Python 中使用 Selenium 查找具有如下 html 的元素:
<td class="td1" onclick="window.location.href = 'work_area.php?SID';">Work area</td>
包含在一个简单的<tr></tr>
标签中。
我试过使用
work_area = driver.find_element_by_css_selector('td[contains(@onclick, "work_area.php?SID"]')
并使用绝对 xpath
work_area = driver.find_element_by_xpath("/html/body/table/tbody/tr[2]/td[1]/div/table/tbody/tr[2]/td/table/tbody/tr[3]/td")
我的按钮结构:
+---------------------+
| Menu |
+---------------------+
| Work Area |
+---------------------+
| Details |
+---------------------+
我正在使用 Python 3.6,Selenium 是最新的,有什么建议吗?我还尝试了可以在 stackoverflow 上找到的不同建议,但没有任何帮助。
解决方案
您可以使用以下定位器:
driver.find_element_by_css_selector("td[onclick*='work_area']")
driver.find_element_by_xpath("//td[.='Work area']")
您下面的代码不正确,定位器是 xpath 并且您使用 css 选择器:
work_area = driver.find_element_by_css_selector('td[contains(@onclick,"work_area.php?SID"]')
推荐阅读
- pandas - 熊猫 | 使用位于另一个 Dataframe 中的两个整数值之间的整数过滤 DF 行
- php - 带有日期的CRUD,如何编辑日期?
- arrays - 熊猫数据框中的 Numpy 数组 - 如何规范化值,保持原始结构?
- flutter - 如何仅重建 Listview 中的特定项目?
- c# - 预期的方法名称 - VB.NET 到 C# 的转换
- flutter - 如何设置基本 url 来抖动 http 包?
- android - 尽管代码相同,但 Android 应用程序的行为不同
- html - 如何在触发 flex-wrap 时正确对齐,但在其他情况下对齐内容空间?
- docker - 如何在 Windows 10 企业版中将域用户添加到组 (docker-users)?无法启动 Docker Windows 桌面
- python - 即使安装了模块,导入模块也会引发 ModuleNotFoundError