【问题标题】:Finding li element by text inside - Selenium Python通过内部文本查找 li 元素 - Selenium Python
【发布时间】:2020-06-03 13:37:10
【问题描述】:

我一直在尝试通过使用里面的文本找到一种方法来单击特定的 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


    【解决方案1】:

    点击动态诱导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
    

    【讨论】:

    • 你是救生员。发挥了魅力。非常感谢朋友。
    猜你喜欢
    • 1970-01-01
    • 2020-12-07
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多