我正在尝试将我的程序放在网页上,并等待文章中的特定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” ?
谢谢!
答案 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