如何用 selenium Python点击复选框过滤器?

1sbrub3j  于 2023-02-08  发布在  Python
关注(0)|答案(2)|浏览(204)

我正在尝试用selenium python点击一个网站上的复选框过滤器。这是链接到其中一个复选框选项的HTML代码的一部分。

<div class="shopee-checkbox" bis_skin_checked="1">
    <label class="shopee-checkbox__control">
        <input type="checkbox" name="" value="Jabodetabek">
        <div class="shopee-checkbox__box" bis_skin_checked="1">
            <i> </i>
        </div>
        <span class="shopee-checkbox__label">Jabodetabek</span>
    </label>
</div>

我试着跟着,但没用。

import time
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://shopee.co.id/search?keyword=baju%20laki-laki')

time.sleep(5)
driver.find_element(By.XPATH, "//input[@value='JABODETABEK']").click()

我读了类似问题的答案,大多数都建议使用“id”和“name”来查找元素,但是在这个input标记中,只有“type”和“value”。

svmlkihl

svmlkihl1#

以下是选中该复选框的一种方法:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
[...]
wait = WebDriverWait(driver, 25)
[..]
wait.until(EC.element_to_be_clickable((By.XPATH, '//span[text()="Jabodetabek"]'))).click()
print('clicked on Jabodetabek')

Selenium文档可在here中找到。

6rqinv9w

6rqinv9w2#

xpath中复选框的 @value 不正确。Selenium Web定位器技术区分大小写。因此,请确保在标识对象时使用准确的值。将xpath更改为以下值将修复此问题。

driver.find_element(By.XPATH, "//input[@value='Jabodetabek']").click()

相关问题