Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Selenium:当文本多次出现时,如何定位精确的文本匹配_Python_Selenium_Xpath - Fatal编程技术网

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

Python Selenium:当文本多次出现时,如何定位精确的文本匹配,python,selenium,xpath,Python,Selenium,Xpath,我正在寻找使用这个小selenium脚本的解决方案。当列表中出现一次以上的文本时,就会出现问题。我正在使用xpath命令[contains()]查找in。然后脚本停止 正如您在我的脚本中看到的,我尝试使用css选择器(未注释),但它无效。我见过一些使用带有^and$的css选择器的正则表达式解决方案,但我不知道它是如何工作的 编辑:我只想选择第三个元素“LIT”,因为你可以看到de列表中有很多次LIT,它们会阻止脚本 下面是html代码片段 <div class="prodUnitCat"

我正在寻找使用这个小selenium脚本的解决方案。当列表中出现一次以上的文本时,就会出现问题。我正在使用xpath命令[contains()]查找in。然后脚本停止

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

编辑:我只想选择第三个元素“LIT”,因为你可以看到de列表中有很多次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>

使用
//span[text()='“+cat3+”]。
。不要使用contains关键字,因为它将尝试搜索子字符串LIT。如果删除contains,则它将尝试仅将整个单词“LIT”与区分大小写匹配。

使用
//span[text()='“+cat3+”].
。不要使用contains关键字,因为它将尝试搜索子字符串LIT。如果删除contains,则它将尝试仅将整个单词“LIT”与区分大小写匹配。

我没有足够的评论点,但我只是添加到Vishal Jagtap的答案中(这也适用于我-谢谢!)。他们的回答中的“代码”部分似乎有输入错误。应该是:

//span[text()='" + cat3 +"']
而不是:

也许很明显,但这让我(一个相对初学者)感到困惑。通过将字符串设置为变量/对象,还可以简化代码:

search_string = "//span[text()='" + cat3 +"']"
driver.find_element_by_xpath(search_string).click()

我没有足够的观点来评论,但我只是补充了Vishal Jagtap的回答(这对我也很有用-谢谢!)。他们的回答中的“代码”部分似乎有一个拼写错误。应该是:

//span[text()='" + cat3 +"']
而不是:

也许很明显,但这让我(一个相对初学者)感到困惑。通过将字符串设置为变量/对象,还可以简化代码:

search_string = "//span[text()='" + cat3 +"']"
driver.find_element_by_xpath(search_string).click()

预期的结果是什么?你想找到什么?哦,很抱歉,我试图找不到LIT,但我假设出现了多次“LIT”,它不起作用。你当前的代码有任何错误吗?谢谢。事实上,脚本阻塞并最终为下一步“cat3”引发错误,因为它找不到。cat 3不会出现,因为当您单击cat时,它是动态的2@Andronaute然后,使用显式等待来等待cat3出现是有意义的,对吗?我的意思是,它可能就是这样。预期的结果是什么?你想找到什么?哦,对不起,我想找不到LIT,但我假设是多次出现“LIT”它不起作用您当前的代码是否有任何错误?谢谢。实际上,脚本会阻塞,并最终为下一步“cat3”引发错误,因为它找不到。cat 3不会出现,因为当您单击cat时,它是动态的2@Andronaute然后,用一个明确的等待等待cat3出现是有意义的,对吗?我的意思是它可能就是这样。它像一个符咒一样工作…谢谢你。我会接受你的回答。它像一个符咒一样工作…谢谢你。我会的接受你的回答