我一直想找到一种方法,通过使用里面的文本来点击一个特定的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)
以上是我尝试定位元素的诸多事情之一,但目前还没有任何结果。
任何帮助都将是非常感激的。非常感谢
要点击动态诱导 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