使用“data-testid”属性通过Selenium获取元素

-2 投票
1 回答
103 浏览
提问于 2025-04-14 17:15

我正在尝试获取HTML中每个元素的数据,这些元素都有一个叫data-testid的属性,具体内容如下:

<div data-testid="sl.explore.card-description"</div>

我写的代码如下,但它并没有正常工作:

desc_list = []

desc = driver.find_elements(By.XPATH, "//div[@data-testid='sl.explore.card-description']") 

for i, cp in enumerate(desc):
    splitted = desc[i].text.split('\n');           
    data_desc = str(splitted[0:1])
    desc_list.append(data_desc);    
    df_desc = pd.DataFrame(desc_list)

1 个回答

0

你能给我们这个网页元素的链接吗?或者你可以把整个元素发给我们吗?看起来语法不太对。不过我可以给你一些建议。

要找到带有特定文本的元素:

driver.findElement(By.xpath("//button[@data-testid='s1.explore.card-description']/span[contains(., 'Some text here')]"));

假设接下来你会对这个元素使用 click() 方法,这样的话,你最好先设置一个等待,确保这个元素可以被点击。

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@data-testid='s1.explore.card-description']/span[contains(., ., 'Some text here')]"))).click();

撰写回答