我找不到用于通过硒中的 xpath 删除记录的按钮

I can't locate a button that is used to delete a record by its xpath in selenium

提问人:Test Freex 提问时间:11/1/2023 最后编辑:ShawnTest Freex 更新时间:11/10/2023 访问量:28

问:

我有一个元素在表中,在此表中保存了具有不同 id 的记录。

这是删除按钮的类型

<span class=" material-icons notranslate icon" aria-hidden="true">delete</span>

这是相对的 XPATH:

//tr[@id='223']//span[contains(@class,'notranslate icon')][normalize-space()='delete']

如果我用 ID 搜索它,它会找到它,但我创建的记录我不知道它会是什么 ID,它可能是 224,也可能是 14556,所以我需要单击该元素。

<a class="btn btn-icon btn-destructive-sec btn-md md-component ghost text-capitalize text-danger-400 " data-title="Delete " data-toggle="tooltip" data-placement="left " data-confirm="Are you sure you want to delete this offer letter template?" rel="nofollow" data-method="delete" href="/recruiting/offer_letter/templates/241" data-original-title="" title="">
<span class=" material-icons notranslate icon" aria-hidden="true">delete</span>

当我通过 xpath 搜索一个元素时,它会找到它,但下一个元素的 ID 会有所不同,我再也找不到它了

java selenium-webdriver xpath

评论

0赞 Community 11/1/2023
请提供足够的代码,以便其他人可以更好地理解或重现问题。
0赞 Shawn 11/1/2023
谷歌这个 如何在 selenium 中处理动态 Web 表。你应该得到很多解决方案。我在这里发布了谷歌搜索结果之一 guru99.com/handling-dynamic-selenium-webdriver.html

答:

0赞 Tououououer 11/10/2023 #1
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.by import By
...
rows = WebDriverWait(driver,timeout=5).until(ec.presence_of_all_elements_located((By.XPATH,'//div[@id="table_ls"]tbodytr')))
for row in rows:
    date = row.find_element(By.XPATH, './td[1]').text
    closing_price = row.find_element(By.XPATH, './td[2]').text
    fluctuation_range = row.find_element(By.XPATH, './td[3]').text
    row.find_element(By.XPATH, './td[4]').click()
    row.find_element(By.XPATH, './td[5]').get_attribute('value')
    ...
    ...
...

您好,我没有在 Java 中使用过 selenium,但请允许我在 python 中使用我的思维过程。我省略了一些初始化代码,希望你能理解它。首先,rows 是表中每行中的元素列表。当我想访问一行的哪个单元格时,我会在循环中执行,如上所述,因此您可以确保您使用的 xpath 与更改的 id 无关。