Python 3.x Python Selenium,如何查找不包含字符串的元素

Python 3.x Python Selenium,如何查找不包含字符串的元素,python-3.x,selenium,xpath,Python 3.x,Selenium,Xpath,基本上,我已经有了一段代码,可以在包含关键字Matty Matheson Hood的页面上找到所有selenium元素(见下文): 现在它工作得很好,但是,它返回4个元素,我试图通过去掉那些包含关键字Tie Dye 简单地说,我想知道我是否可以使用类似于上面所述的内容,而是使用not contains,是否可以将contains和not contains合并到一个搜索中 因此,找到所有包含Matty Matheson Hood但不包含扎染的元素(应仅为1) 感谢您的帮助 我们可以使用列表理解,从

基本上,我已经有了一段代码,可以在包含关键字Matty Matheson Hood的页面上找到所有selenium元素(见下文):

现在它工作得很好,但是,它返回4个元素,我试图通过去掉那些包含关键字Tie Dye

简单地说,我想知道我是否可以使用类似于上面所述的内容,而是使用not contains,是否可以将contains和not contains合并到一个搜索中

因此,找到所有包含Matty Matheson Hood但不包含扎染的元素(应仅为1)


感谢您的帮助

我们可以使用列表理解,从列表中删除我们不再需要的所有所需项目

一个选项可以是:

some_list = driver.find_elements_by_xpath("//*[contains(text(), '" + keyword + "')]")

matching = [s for s in some_list if "Tie Dye" in s]
列表理解用于从其他ITerable创建新列表

当列表理解返回列表时,它们由包含表达式的括号组成,表达式与for循环一起对每个元素执行,以迭代每个元素

这是基本语法:

new_list = [expression for_loop_one_or_more conditions]

我们可以使用列表理解,从列表中删除我们不再需要的所有所需项目

一个选项可以是:

some_list = driver.find_elements_by_xpath("//*[contains(text(), '" + keyword + "')]")

matching = [s for s in some_list if "Tie Dye" in s]
列表理解用于从其他ITerable创建新列表

当列表理解返回列表时,它们由包含表达式的括号组成,表达式与for循环一起对每个元素执行,以迭代每个元素

这是基本语法:

new_list = [expression for_loop_one_or_more conditions]

我通过多列表解决方法解决了我的问题:

    positive_list = driver.find_elements_by_xpath("//*[contains(text(), '" + positive_keyword + "')]")
    negative_list = driver.find_elements_by_xpath("//*[contains(text(), '" + negative_keyword + "')]")

    result_list = [item for item in positive_list if item not in negative_list]

这可能不是最有效的系统,但它符合我的目的。如果您有任何发现,请随意添加更有效的方法:)

我通过多列表解决方法解决了我的问题:

    positive_list = driver.find_elements_by_xpath("//*[contains(text(), '" + positive_keyword + "')]")
    negative_list = driver.find_elements_by_xpath("//*[contains(text(), '" + negative_keyword + "')]")

    result_list = [item for item in positive_list if item not in negative_list]

这可能不是最有效的系统,但它符合我的目的。如果您发现任何方法,请随意添加更有效的方法:)

以下是纯xpath,它将只返回包含
Matty Matheson Hood
且不包含
Tie Dye
的元素

//*[contains(text(), 'Matty Matheson Hood')][not(contains(text(),'Tie Dye'))]
屏幕截图:
这里是纯xpath,它将只返回包含
Matty Matheson Hood
且不包含
Tie Dye
的元素

//*[contains(text(), 'Matty Matheson Hood')][not(contains(text(),'Tie Dye'))]
屏幕截图:

谢谢你的建议,忘了在这里查看任何可能的解决方案,但似乎我找到了我的解决方案:)谢谢你的建议,忘了在这里查看任何可能的解决方案,但似乎我找到了我的解决方案:)