【问题标题】:Selecting lines matching keywords using XPATH使用 XPATH 选择匹配关键字的行
【发布时间】:2015-02-18 03:02:17
【问题描述】:

我想打印所有以“+”开头的行,其中包含关键字,例如“hasRole”。

String search="//td[contains(@class,'blob-code blob-code-addition') and contains(text(),'hasRole')]";

我知道一个简单的条件是不够的。如何为此制定 XPATH 搜索?

这是一个屏幕截图。

另外,如何让这个搜索不区分大小写?

【问题讨论】:

  • 能否在问题中添加 html 片段作为文本?
  • @Jon 试过,但在我的情况下不起作用。我必须使用包含
  • 不在图像中显示标记。请将此屏幕截图替换为您的 HTML 输入示例,供人们用于测试

标签: java selenium xpath selenium-webdriver web-scraping


【解决方案1】:

你可以这样使用:

//td[(contains(lower-case(@class), 'blob-code blob-code-addition') ... 

//td[(contains(translate(@class, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz"), 'blob-code blob-code-addition') ... 

【讨论】:

  • 我想将“hasRole”与忽略大小写匹配。我不关心班级
  • 是一样的。 ... contains(lower-case(.),'hasrole') ... OR ... contains(translate(., "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz"), 'hasrole') ...
【解决方案2】:

我尝试了以下方法并且成功了。

String search="//td[(contains(@class,'blob-code blob-code-addition') and contains(.,'HasRole')) or (contains(@class,'blob-code blob-code-deletion') and contains(.,'HasRole'))]";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-01
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多