首页 > 解决方案 > 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”)的元素的情况。有没有办法选择其中一个(我需要同时选择但分别在不同的脚本中)。

先感谢您。

标签: pythonselenium

解决方案


要单击 a 标签,试试这个 XPath: driver.find_element(By.XPATH, '//p[text() = "RPM 80"]/parent::div/parent::a').click()


推荐阅读