2016-10-13 77 views
0

大家好我的代碼的功能是獲取用戶鞋大小首選項,然後根據它們的大小單擊頁面上的某個元素。 我將通過從用戶處獲取數字輸入並將其存儲在一個值中,然後搜索與他們輸入的大小相匹配的元素來完成此操作。如何使用同一個類名稱定位多個「li」

這裏是我使用的網站的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(); 

*注意,我之前已經宣佈了一個名爲「大小」的變量,而這正是我指的是,當它說:「(文本() ,大小)」

我得到的錯誤:

Additional information: Unexpected error. Element is not clickable at point (825.1500244140625, 45.69999694824219). Other element would receive the click: div class="header__wrapper">

我不知道如何處理這一點,需要在一般揭示它的一些情況。我已經通過stackoverflow搜索答案,並沒有發現任何有關exactlty我試圖完成的職位,或含糊不清,難以理解。

在回答我對Selenium和C#一般都是新手時,請小心謹慎,所以如果您可以在答案中添加一些細節,而不是假設我知道您在說什麼,那就太好了。

回答

0

您意外地將大小設置爲文本而不是變量。這意味着硒將搜索列表項與文本「大小」,這不存在,而不是例如大小9.5,

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

嗨Bouke,我跑了你建議的代碼和一個小窗口彈出稱Firefox正在更新...現在,我在新的firefoxdriver()行上得到了一個「WebDriverException was unhandled」的錯誤,並且Firefox會打開,但不會顯示任何頁面。我知道它與你的代碼無關,但你有什麼建議嗎? –

+0

這可能很有可能WebDriver沒有及時更新FireFox。我建議再次將FireFox降級到以前的版本,或者暫時使用Chrome。 – Bouke

+0

我遵循教程並降級了FireFox。嘗試您的代碼後,我收到錯誤: –

相關問題