如何定位多个" li"具有相同的类名

时间:2016-10-13 19:00:48

标签: c# html selenium

大家好,我的代码的功能是获取用户的鞋号偏好,然后根据页面大小单击页面上的元素。 我将通过从用户获取数字输入并将其存储在一个值中,然后搜索与他们输入的大小相匹配的元素来完成此操作。

以下是我正在使用的网站的HTML代码:

<div class="form product__form product__form--size product__form--last js-select-size-mapper">
<ul class = "product-size">
<li class = "js-size-value ">
8
</li>
<li class = "js-size-value ">
9
</li>
<li class = "js-size-value ">
9.5
</li>
<li class = "js-size-value ">
10
</li>
<li class = "js-size-value ">
10.5
</li>
</ul>
</div>

关于元素如何无法点击,我总是遇到一些错误。奇怪的部分有时会验证IWebElement声明(我的意思是声明它没有错误),有时我尝试点击时会出错。

如果您需要查看更好的代码示例,请跳转到网站here

例如,当我运行此代码时:

var element = driver.FindElement(By.XPath("//li[contains(@class,'js-size-value ')][contains(text(),size)]"));
            element.Click();

*请注意,我之前已经声明了一个名为&#34; size&#34;的变量,这就是我所说的&#34;(text(),大小)]&#34;

我收到错误:

  

其他信息:意外错误。元素不可点击(825.1500244140625,45.69999694824219)。其他元素将收到点击:div class =&#34; header__wrapper&#34;&gt;

我不知道如何处理这个问题,一般需要一些亮点。我已经在stackoverflow中搜索了答案,并且没有发现任何与我想要完成的内容有关的帖子,或者模糊且难以理解。

在回答我是Selenium和C#的新手时请小心谨慎,所以如果你能在答案中添加一些细节而不是假设我知道你在说什么,那就太棒了。

1 个答案:

答案 0 :(得分:0)

您不小心将大小设置为文本而不是变量。这意味着selenium将使用文本&#39; size&#39;来搜索列表项,该文本不存在,而不是例如9.5版,

var element = driver.FindElement(By.XPath("//li[contains(@class,'js-size-value')][contains(text()," + size + ")]"));