如何在“a href”标记中搜索文本并单击?

2024-04-25 16:34:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张有很多链接的桌子。ID都是唯一的,但不符合实际显示的文本,所以我有一些麻烦。你知道吗

例如

<tr>
  <td><a id="011" href="/link">Project 1</a></td>
</tr>
<tr>
  <td><a id="235" href="/link">Project 2</a></td>
</tr>
<tr>
  <td><a id="033" href="/link">Project 3</a></td>
</tr>
<tr>
  <td><a id="805" href="/link">Project 4</a></td>
</tr>

我只知道ahref(即项目1)中的文本,我想搜索它并单击它。我还没有弄清楚这个问题,我已经在玩find\ element\ by\ uxpath有一段时间了。你知道吗

我一直在用

selectproject = browser.find_element_by_xpath("//a[contains(.,projectname)]").click();

(projectname是一个每次迭代都会更改的变量) 我认为找到元素是可行的,因为脚本运行了,但是没有点击。我想这是因为我实际上并不是在搜索ahref,而只是在搜索文本?你知道吗


Tags: 文本projectidby链接linkelementfind
2条回答

如果您的要求是“点击链接项目1”,那么您应该使用作为定位器。无需使用XPath。你知道吗

    browser.find_element_by_linkText("Project 1").click();
    // or the more flexible
    browser.find_element_by_partialLinkText("Project 1").click();

.find_element_by_partialLinkText()定位器策略应该考虑由于额外的span元素而产生的任何额外的空白填充。你知道吗

注意:我编写Java,因此上面的Python语法可能已关闭。但这些方法必须存在。你知道吗

以下是您问题的答案:

如果要单击带有文本Project 1的链接,可以使用以下代码行:

browser.find_element_by_xpath("//a[contains(text(),'Project 1')]").click()

or

browser.find_element_by_xpath("//a[@id="011"][contains(text(),'Project 1')]").click()

更新:

正如您所提到的Project 1部分是动态的,因此您可以尝试构建一个单独的function()来单击这些链接。使用所有项目名逐个调用函数,如下所示(函数位于Java考虑根据所需的语言绑定进行转换):

public void clickProject(String projectName)
{
    browser.findElement(By.xpath("//a[.='" + projectName + "']")).click();
}

现在可以从main()类调用:clickProject(Project1)

如果这能回答你的问题,请告诉我。你知道吗

相关问题 更多 >

    热门问题