单击selenium中包含特定文本的链接

时间:2015-03-03 19:17:00

标签: selenium selenium-webdriver

我尝试了一些这样的事情:

IWebDriver driver = new ChromeDriver(@"D:\Selenium");
driver.Navigate().GoToUrl("http://www.bladibla.com");

ReadOnlyCollection<IWebElement> elements = driver.FindElements(By.TagName("a"));
foreach (IWebElement element in elements)
{
    if (element.Text.Equals("Bla"))
    {

    }
    Console.WriteLine(element.Text);
}

包含一些XPath但没有成功。我想要的只是点击这个html代表的链接:

<a href="xyz/bla.txt" onclick="ga('send', 'pageview', 'xyz/bla.txt');"><img src="images/download16.png" alt="Download XYZ" />Bla</a>

非常感谢任何帮助。感谢。

PS:

当前代码:

using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

namespace Selenium
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                IWebDriver driver = new ChromeDriver(@"D:\Selenium");
                driver.Navigate().GoToUrl("http://www.doogal.co.uk/UKPostcodes.php?Search=AB1");

                var test = driver.FindElement(By.CssSelector("a[href^='UKPostcodesKML']"));

                driver.Close();
            }
            catch (Exception e)
            {

                throw;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您可以使用下面的部分链接文字。

driver.findElement(By.partialLinkText("Bla"))

如果href对于该锚是唯一的,那么您可以使用如下的css选择器来获取该特定锚。

driver.FindElement(By.CssSelector("a[href=xyz/bla.txt]")

答案 1 :(得分:0)

这应该适合你:

driver.findElement(By.xpath("//a[contains(text(), 'KML format')]")).click();

或者这个:

driver.findElement(By.partialLinkText("KML format")).click();