通过文本查找li元素 - Selenium Python

问题描述 投票:0回答:2

我一直想找到一种方法,通过使用里面的文本来点击一个特定的li元素,然而,无论我怎么尝试,似乎都找不到这个元素。

HTML是这样的。

<ul class="shoes-sizen-mp" id="ul_top_hypers" style="overflow: auto;">

<li id="li_284" onclick="return select_size('284')"><a class="a_top_hypers">  3.5  <span style="display: none">,</span><br>   35.5<br></a></li>
<li id="li_285" onclick="return select_size('285')"><a class="a_top_hypers">  4  <span style="display: none">,</span><br>   36<br></a></li>

这是一个列表的一部分,你可以选择你的大小(如3.5,4,4.5,5)。我希望能用3.5等文字来点击具体的。

编辑

driver.find_element_by_xpath(f"//ul[@id='ul_top_hypers' and starts-with(@id, 'li_'][contains(text(),'{user_shoe_size}')]").click()
sleep(20)

以上是我尝试定位元素的诸多事情之一,但目前还没有任何结果。

任何帮助都将是非常感激的。非常感谢

python selenium dom element
2个回答
0
投票

要点击动态诱导 WebDriverWait()并等待 element_to_be_clickable()和下面的xpath。

def click_size(size):
    WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//ul[@class='shoes-sizen-mp']//li[contains(.,'{}')]".format(size)))).click()

click_size("3.5")

你需要导入以下库。

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
© www.soinside.com 2019 - 2024. All rights reserved.