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

时间:2020-06-03 13:37:10

标签: python selenium dom element

我一直在尝试通过使用内部文本来找到单击特定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)

以上是我尝试定位该元素的众多操作之一,但到目前为止还没有。

任何帮助将不胜感激。非常感谢!

1 个答案:

答案 0 :(得分: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