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

时间:2019-06-29 11:50:19

标签: python-3.x selenium xpath

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

keyword = 'Matty Matheson Hood'
list = driver.find_elements_by_xpath("//*[contains(text(), '" + keyword + "')]")
print(list)

现在这可以正常工作,但是,它返回4个元素,而我试图通过摆脱那些包含关键字扎染

的元素将其缩小到1个元素

我只是想知道我是否可以使用与上面类似的方法,而是使用不包含,是否可以将包含和不包含合并为1个搜索?

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

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

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

一个选项可能如下:

__sub()

列表推导用于从其他可迭代对象创建新列表。

当列表推导返回列表时,它们由包含表达式的方括号组成,该表达式针对每个元素执行,并带有for循环以迭代每个元素。

这是基本语法:

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

matching = [s for s in some_list if "Tie Dye" in s]

答案 1 :(得分:0)

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

class CreateGroup(LoginRequiredMixin, CreateView):
    model = Group
    form_class = GroupForm
    template_name = 'form.html'

它可能不是最有效的系统,但可以满足我的目的。如果发现任何问题,请随时添加更有效的方法:)

答案 2 :(得分:0)

这里是纯xpath,它将仅返回包含Matty Matheson Hood而不包含Tie Dye的元素。

//*[contains(text(), 'Matty Matheson Hood')][not(contains(text(),'Tie Dye'))]

截屏: enter image description here