Selenium - 在相同的<articles>之间识别,C#

时间:2016-10-16 06:34:43

标签: c# selenium webdriver article tagname

我正在尝试将我的程序放在网页上,并等待文章中的特定tagName出现。问题是,我需要Selenium在点击之前检查文章是否包含两个tagNames,这就是我难倒的地方。我现在的代码设置方式,它不会点击任何地方。它只是坐在页面上,我怀疑是因为有多篇文章与我试图找到的主要tagName相同。这是HTML:

<article>
   <div class ="inner-article">
      <a href ="/shop/shirts/iycbmgtqw/x9vdawcjg" style="height:150px;">
         <img alt="Xrtqh7ar444" height="150" src="//d17ol771963kd3.cloudfront.net/120885/vi/xrTQH7Ar444.jpg" width="150">
      </a>
      <h1>
        <a href="/shop/shirts/iycbmgtqw/x9vdawcjg" class="name-link">EXAMPLE_CODE</a>
      </h1>
      <p>
        <a href="/shop/shirts/iycbmgtqw/x9vdawcjg" class="name-link">EXAMPLE_COLOUR</a>
      </p>
   </div>
</article>

此页面上的所有其他项目都具有相同的类别,有些项目具有相同的tagNames。我想搜索文章中两个tagNames的特定组合。我意识到xPath是一个选项,但我想在知道xPath之前对其进行编码,其中项目的名称是唯一可用的信息。

这是我现在正在处理的代码:

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromMinutes(10));


IWebElement test = driver.FindElement(By.TagName(textBox12.Text));
test.Click();

其中textBox12.Text为“EXAMPLE_CODE”。我是否正确假设WebDriver没有点击任何内容,因为有多个元素带有tagName“EXAMPLE_CODE”,并且有可能让它首先查找“EXAMPLE_CODE”,然后检查辅助:“EXAMPLE_COLOUR” ?

谢谢!

1 个答案:

答案 0 :(得分:0)

您错误地使用了By.TagName。 Tag指的是您要查找的元素类型。在这种情况下,链接是'a'。或者在div的情况下它是'div'。使用标记名查找链接的正确方法是 - By.TagName("a")

您需要匹配文本,您需要使用xpath。假设代码是唯一的,你应该尝试。

XPath获取代码href - //div[class='inner-article']/h1/a[.=EXAMPLE_CODE]

XPath获取颜色href - //div[class='inner-article']/h1/a[.=EXAMPLE_CODE]/following-sibling::a