0

我试图让我的程序位于网页上并等待文章中的特定 tagName 出现。问题是,我需要 Selenium 在单击它之前检查文章是否包含两个标记名,这就是我难住的地方。我现在设置代码的方式,它不会点击任何地方。它只是位于页面上,我怀疑是因为我要查找的主要标签名相同的文章不止一篇。这是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 的特定组合。我意识到 xPath 是一个选项,但我想在知道 xPath 之前对其进行编码,其中项目的名称是唯一可用的信息。

这是我目前正在使用的代码:

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


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

其中 textBox12.Text 是“EXAMPLE_CODE”。我是否正确假设 WebDriver 没有单击任何内容,因为标签名称为“EXAMPLE_CODE”的元素不止一个,是否有可能的方法让它首先查找“EXAMPLE_CODE”,然后检查辅助:“EXAMPLE_COLOUR” ?

谢谢!!

4

1 回答 1

0

您使用By.TagName不正确。标签是指您要查找的元素的类型。在这种情况下,链接是“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

于 2016-10-16T07:18:33.920 回答