如何在selenium webdriver中单击具有相同名称的链接?

时间:2014-05-17 13:20:10

标签: java selenium xpath

我正在使用带有java的selenium web驱动程序。我想点击名称下载的链接。 实际上有四个同名的链接。当我检查我得到的元素时

<a href="http://selenium-release.storage.googleapis.com/2.41/selenium-java-2.41.0.zip"></a>

我正在尝试点击以下

的链接
driver.findElement(By.xpath("//a[@ href='//http://selenium-release.storage.googleapis.com/2.41/selenium-java-2.41.0.zip']")).click();

在以下链接中,我试图点击第一个下载链接。 Selenium Download

点击无效。请问有谁可以告诉我如何点击这个具体的链接?

提前致谢。

5 个答案:

答案 0 :(得分:3)

你的xpath是正确的,除了两件事:

  1. @和href之间的空格;
  2. http之前的2斜杠。
  3. 纠正这个问题,它会起作用。

    另外我不建议使用这样的xpath。如果更改了href值,则xpath将无法正常工作。

    为避免这种情况,您可以使用xpath,如:

    //tbody//td[text()='Java']/following-sibling::td/a[text()='Download']

    即使href值已更改(例如,更改为2.42),它也会单击Java的下载链接。

答案 1 :(得分:1)

理查德的答案是正确的,但这个xpath更容易阅读:

//td[(text()='Java')]/following-sibling::td/a[text() = 'Download']

答案 2 :(得分:0)

此xpath将找到Java的下载链接:

//td[(text()='Java')]/following-sibling::td[3]/a

答案 3 :(得分:0)

在&#39;之间留出一点空间。标签

<a href="http://selenium-release.storage.googleapis.com/2.41/selenium-java-2.41.0.zip"> </a>

从http字之前取出//(双正斜杠)。

driver.findElement(By.xpath("//a[@href='http://selenium-release.storage.googleapis.com/2.41/selenium-java-2.41.0.zip']")).click();

如果我们使用

//td[(text()='Java')]/following-sibling::td/a[text() = 'Download'] 

此代码仅反映webdrive(测试)。所以,我对Fani Khokhar&#39;代码。

 $.ajax({
            type: 'get',
            url: 'http://docs.seleniumhq.org/download/',
            success: function(data) {
                var html = $.parseHTML(data);
                var main_content = $(html).find('#mainContent table:eq(0)');
                var row_count = main_content.find("tbody").find("tr");
                for (var i = 0; i < row_count.length; i++) {
                    var MyIndexValue = $(main_content.find("tbody").find("tr:eq(" + i + " )")).find("td:eq(0)").html();
                    if (MyIndexValue == "Java") {
                        var href_value = main_content.find("tbody").find("tr:eq(0)").find("td:eq(3)").html();
                        var current_version_link = $(href_value).attr('href');
                        $("#here_getback_latest_version").html("<a href=" + current_version_link + "/> </a>");
                    } else {
                        console.log(MyIndexValue + " not required.");
                    }
                }
            },
            error: function() {
                alert("error");
            }
        });

跟着,

<div id="here_getback_latest_version"></div>

如果我们修改了源代码,即使在最新版本中发生了更改,它也会自动下载。

答案 4 :(得分:0)

好吧..我们可以通过xpath识别元素的方法很多。

除了别人的建议之外,我只想提一下识别特定元素的方法。如果您知道元素在网页中出现的顺序,它会很方便。

(//a[text()='Download'])[2]

您也可以参考以下几个链接作为参考。

http://www.quackit.com/xml/tutorial/xpath_string_functions.cfm http://news.rapgenius.com/Mat-brown-xpath-is-actually-pretty-useful-once-it-stops-being-confusing-annotated#note-2363798

相关问题