Python 是否可以使用selenium在DOM树中找到具有特定模式的元素?

Python 是否可以使用selenium在DOM树中找到具有特定模式的元素?,python,selenium,Python,Selenium,我在python中使用Selenium查找DOM树中的一些元素。我想找到具有特定模式的类名。我怎样才能找到这样的类名?我想用regex和按类名查找元素,但我不知道该怎么做。请建议我该怎么做 例如:我想通过类名(浏览器,'webstore de Kb')查找元素,但是de和Kb部分总是在变化,我想搜索webstore-[a-zA-Z]+[a-zA-Z]+-[a-zA-Z]+[a-zA-Z]+[a-zA-Z]+ 有可能做那样的事吗?如果是,如何进行?如果没有,还有其他选择吗?我建议学习CSS。你可以

我在python中使用Selenium查找DOM树中的一些元素。我想找到具有特定模式的类名。我怎样才能找到这样的类名?我想用regex和
按类名查找元素
,但我不知道该怎么做。请建议我该怎么做

例如:我想通过类名(浏览器,'webstore de Kb')查找元素,但是
de
Kb
部分总是在变化,我想搜索
webstore-[a-zA-Z]+[a-zA-Z]+-[a-zA-Z]+[a-zA-Z]+[a-zA-Z]+


有可能做那样的事吗?如果是,如何进行?如果没有,还有其他选择吗?

我建议学习CSS。你可以做各种各样的事情。在您的示例中,您可以执行以下操作:

a[id^='the_id']
当元素为

您可以使用:

  • 属性等于(=)
  • 属性以(^=)开头
  • 属性包含(*=)
  • 属性以($=)结尾

您可以直接执行javascript并让selenium为您返回结果。这意味着您基本上可以使用任何条件查找元素,而不仅仅是id或类名,甚至xpath

使用
执行脚本
方法:

# Note: I don't know python so forgive any syntax errors.
# This example is modified from the one in the Selenium documentation:
element = driver.execute_script(
    "function domTraverse (el,callback) {" +
    "  if (callback(el)) return el;" +
    "  else {" +
    "    var ret;" +
    "    for (var x=0;x<el.children.length;x++) {" +
    "      ret = domTraverse(el.children[x],callback);" +
    "      if (ret) return ret;" +
    "    }" +
    "  }" +
    "  return null" +
    "}" +
    "return domTraverse(document.body,function(e){" +
    "  // match desired regex:" +
    "  return e.className.match(/webstore-[a-zA-Z]+[a-zA-Z]+-[a-zA-Z]+[a-zA-Z]+/);" +
    "});"
    )
#注意:我不懂python,所以请原谅任何语法错误。
#此示例由Selenium文档中的示例修改而来:
元素=driver.execute\u脚本(
函数domTraverse(el,回调){+
“如果(回调(el))返回el;”+
“否则{”+
“var ret;”+

“对于(var x=0;xp),如果您想得到有用的答案,请提供相关的HTML片段。