2017-02-23 48 views
2

什麼我做的是:Chromedriver按下「Ctrl +單擊」,而不是正常的「點擊」

return element(by.xpath('//*/*[@id = "countyIds"]/option[contains(text(),"'+value+'")]')).click(); 

但我可以看到它「Ctrl +單擊」導致兩個值留突出。

HTML:

<select name="countyIds" id="countyIds" class="filter" multiple=""> 
     <option value="864">Banskobystrický kraj</option> 
     <option value="821" selected="selected">Bratislavský kraj</option> 
     <option value="892" selected="selected">Košický kraj</option> 
     <option value="844">Nitriansky kraj</option> 
     <option value="878">Prešovský kraj</option> 
     <option value="834">Trenčiansky kraj</option> 
     <option value="826">Trnavský kraj</option> 
     <option value="852">Žilinský kraj</option> 
</select> 

你可以看到第二個和第三個方案二selected值。如何使正常的「點擊」?

回答

0

您可以使用選擇對象,而不是直接點擊:

using OpenQA.Selenium.Support.UI; 

// select the drop down list 
var countries = driver.FindElement(By.Name("countries")); 
//create select element object 
var selectElement = new SelectElement(countries); 

//select by value 
selectElement.SelectByValue("844"); 
// select by text 
selectElement.SelectByText("Prešovský kraj"); 
+0

上述的問題是,.SelectByValue和.SelectByText具有相同的行爲,它們不會導致被取消選擇的元素,您需要先調用DeselectAll()。但是,有時網頁不會有一個沒有選擇的選擇框。我有一個多選框,如果我點擊爲一個實際用戶,它會取消選擇當前選中的選項並切換到單擊選項,但我無法通過ChromeDriver實現此行爲。使用DeselectAll()與用戶做的不匹配。 –

相關問題