Python 3.x Python Selenium,如何查找不包含字符串的元素
基本上,我已经有了一段代码,可以在包含关键字Matty Matheson Hood的页面上找到所有selenium元素(见下文): 现在它工作得很好,但是,它返回4个元素,我试图通过去掉那些包含关键字Tie Dye 简单地说,我想知道我是否可以使用类似于上面所述的内容,而是使用not contains,是否可以将contains和not contains合并到一个搜索中 因此,找到所有包含Matty Matheson Hood但不包含扎染的元素(应仅为1)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) 感谢您的帮助 我们可以使用列表理解,从
感谢您的帮助 我们可以使用列表理解,从列表中删除我们不再需要的所有所需项目 一个选项可以是:
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'))]
屏幕截图:
谢谢你的建议,忘了在这里查看任何可能的解决方案,但似乎我找到了我的解决方案:)谢谢你的建议,忘了在这里查看任何可能的解决方案,但似乎我找到了我的解决方案:)