如何针对多个“利”字;使用相同的类名

本文关键字:何针 | 更新日期: 2023-09-27 18:13:09

大家好,我的代码的功能是获取用户的鞋码偏好,然后根据他们的尺寸单击页面上的元素。我将通过从用户处获取数字输入并将其存储在一个值中,然后搜索与他们输入的大小匹配的元素来实现这一点。

这是我使用的网站的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声明被验证(我的意思是没有错误声明它),有时有一个错误,当我试图点击。

如果你需要看一个更好的代码示例,请跳转到这里的网站。

例如,当我运行以下代码:

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

*注意,我之前声明了一个名为"size"的变量,当它说"(text(),size)]"时,我指的就是这个变量。

我得到错误:

附加信息:Unexpected error。元素在点(825.1500244140625,45.69999694824219)不可点击。其他元素将收到点击:div class="header__wrapper">

我不知道如何处理这个问题,需要一些关于它的启示。我已经通过stackoverflow搜索了答案,并没有找到任何与我想要完成的确切相关的帖子,或者是模糊和难以理解的。

请谨慎回答,我是新的硒和c#一般,所以如果你能在你的答案中添加一点细节,而不是假设我知道你在说什么,那将是伟大的。

如何针对多个“利”字;使用相同的类名

您意外地将size设置为文本而不是变量。这意味着selenium将搜索带有文本'size'的列表项,该文本不存在,而不是例如size 9.5,

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