python - selenium + python - 找到一个元素并移动到一个可点击的链接
问题描述
我一直在学习 python 并使用 selenium 一个月左右,我被困在我的脚本需要的最后一件事上。
该脚本选择一个元素并单击它。我可以直接这样做,但我已经意识到元素的标识符不断变化,所以我想通过文本选择它。
这是html片段:
<a href="javascript:void(0)" style="text-decoration:none;" onclick="getClassDetails('265090', '614617')" class="spinstudio"> <div>
<div class="triangle"></div>
<p style="padding:10px 25px 0 25px;font-size:13px">RPM 80</p>
<p style="font-size:12px;text-align:left;float:left;padding:0;margin:0;">
600 cals
</p>
<p style="font-size:12px;text-align:right;float:right;padding:0;margin:0;">
30 mins
</p>
</div>
</a>
可点击元素当然是 onclick。我已经设法通过使用以下号码来完成这项工作:
button = driver.find_element_by_xpath("//a[contains(@onclick,'\"getClassDetails('265090')\"')]")
并通过 xpath:
button = driver.find_element_by_xpath('/html/body/div[12]/div[3]/div[8]/a').click()
但正如我所说,这两个都在不断变化,我需要定期运行它。所以我想尝试按标签名称选择,然后移动到可点击的链接并点击它。这就是我需要帮助的地方。我从这个开始
button = driver.find_element_by_tag_name("//p[contains('RPM 80')]")
并尝试了一些 ActionChains 选项,但我有点迷茫。
另外,我想我可能会遇到页面上有两个具有相同标签(例如“RPM 80”)的元素的情况。有没有办法选择其中一个(我需要同时选择但分别在不同的脚本中)。
先感谢您。
解决方案
要单击 a 标签,试试这个 XPath:
driver.find_element(By.XPATH, '//p[text() = "RPM 80"]/parent::div/parent::a').click()
推荐阅读
- http - Niginx 服务器:SSL_ERROR_RX_RECORD_TOO_LONG
- mysql - 我在 mysql 上使用带有 setlist 的正则表达式得到奇怪的答案
- gradle - 如何在 IntelliJ-gradle 插件构建期间理解/修复“无法解析所有配置文件”
- javascript - 当第一个值失败时,JavaScript 代码不会为其他值执行
- python - 带有 Selenium 的 Scrapy 不会检测到动态加载的 HTML 元素
- python - Python 以一种颜色绘制每年 365 天的数据
- mysql - 为什么我在数据库中的密码不等于请求正文中的密码?
- c++ - 使用 constexpr 的全局初始化顺序
- c# - 如何在 MaterialDesignInXaml Snackbar 上进行换行?
- c# - 如何将模型中的数据绑定到文本框而不是列表框