gpt4 book ai didi

python - Selenium:当文本多次出现时如何定位精确的文本匹配

转载 作者:行者123 更新时间:2023-12-01 04:38:03 26 4
gpt4 key购买 nike

我正在寻找一个带有这个小 Selenium 脚本的解决方案。当列表中文本出现超过 1 次时,就会出现问题。我正在寻找 xpath 命令[contains()。然后脚本停止。

正如您在我的脚本中看到的那样,尝试使用 css 选择器(未注释),但它无效。我已经看到了一些使用正则表达式和带有 ^ 和 $ 的 css 选择器的解决方案,但我不知道它是如何工作的。

编辑:我希望仅选择第三个元素“LIT”,因为您看到列表中有三次 LIT 阻止了脚本。

这是 html 片段

<div class="prodUnitCat">
<ul class="fixFacetZindex clearBoth" id="divChildrenCategoryFilter_0">
/ul>
<ul data-lvlcat="2">
<li data-idcat="1000015739"><span>ACCESSOIRES LITERIE</span> (9)</li>
<li data-idcat="1000015760"><span>ELEMENT DE LIT</span> (5)</li>
<li data-idcat="1000015773"><span>LIT</span> (9)</li>
<li data-idcat="1000015794"><span>LIT D'APPOINT</span> (2)</li>
</ul>
</div>

这是我的代码

  prod = db.select(sql)
for record in prod:


cat1 = record[10]
cat2 = record[11]
cat3 = record[12]
cat4 = record[13]

# loading check
WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_id(headerFieldID))


# cat selection
driver.find_element_by_xpath(u"//span[contains(text(),'" + cat1 +"')]").click()
driver.find_element_by_xpath(u"//span[contains(text(),'" + cat2 + "')]").click()
#driver.find_element_by_css_selector("span[contains('" + cat2 +"')]").click()
driver.find_element_by_xpath(u"//span[contains(text(),'" + cat3 + "')]").click()
driver.find_element_by_xpath(u"//div[@id=\"categContent\"]/div[4]/ul/li/span[contains(text(),'" + cat4 + "')]").click()
loginButtonElement = WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_xpath(loginButtonXpath))
loginButtonElement.click()

最佳答案

使用 //span[text()='"+ cat3 +"']. 。不要使用 contains 关键字,因为它会尝试搜索 subString LIT。如果您删除包含,那么它将尝试仅匹配整个单词“LIT”并区分大小写。

关于python - Selenium:当文本多次出现时如何定位精确的文本匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31378859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com