2015-09-14 19 views
-1

所以,我想從下拉列表中選擇一個值。代碼看起來像這樣:在Python中的鑄造元素

def selectDropdown(self, locator, value): 
    select_box = self.driver.find_element_by_id(locator) 
    select_box.click() 
    options = [x for x in select_box.find_elements_by_tag_name("li")] 
    for element in options: 
     print ("element ---->", element) 
     print ("value ---->", value) 
     if element == value: 
      element.click() 
      break 

該代碼工作,但元素和值是由於某種原因不同。看看打印輸出:

('element ---->', <selenium.webdriver.remote.webelement.WebElement object at 0x0000000003080908>) 
('value ---->', '\xce\xa4\xcf\x8d\xcf\x80\xce\xbf\xcf\x82 \xce\x92 \xce\xa0\xce\xb5\xce\xb9\xce\xb8\xce\xb1\xcf\x81\xcf\x87\xce\xb9\xce\xba\xce\xbf\xcf\x8d') 
('element ---->', <selenium.webdriver.remote.webelement.WebElement object at 0x0000000003080C18>) 
('value ---->', '\xce\xa4\xcf\x8d\xcf\x80\xce\xbf\xcf\x82 \xce\x92 \xce\xa0\xce\xb5\xce\xb9\xce\xb8\xce\xb1\xcf\x81\xcf\x87\xce\xb9\xce\xba\xce\xbf\xcf\x8d') 
('element ---->', <selenium.webdriver.remote.webelement.WebElement object at 0x0000000003080B70>) 
('value ---->', '\xce\xa4\xcf\x8d\xcf\x80\xce\xbf\xcf\x82 \xce\x92 \xce\xa0\xce\xb5\xce\xb9\xce\xb8\xce\xb1\xcf\x81\xcf\x87\xce\xb9\xce\xba\xce\xbf\xcf\x8d') 

那麼我該怎麼做,如果這樣的聲明,如果工作正常?

下面是HTML代碼:

<div class="chosen-drop"> 
 
    <div class="chosen-search"> 
 
    <input type="text" autocomplete="off" readonly="" /> 
 
    </div> 
 
    <ul class="chosen-results"> 
 
    <li class="active-result" style="" data-option-array-index="1">Τύπος Α</li> 
 
    <li class="active-result" style="" data-option-array-index="2">Τύπος Β</li> 
 
    <li class="active-result" style="" data-option-array-index="3">Τύπος Γ</li> 
 
    </ul> 
 
</div>

+0

是你所需要的element.text ==價值? – Sebastian

+0

我試過,但它不起作用。我想要的值是相同的,所以if語句工作,但元素顯示的地址和值是utf-8。 – fdgenie

+0

您的意思是類似於(?): 中的元素選項: fetcher = element.get_attribute(value) print(「element ---->」,element) print(「value ---->」 ,值) 如果提取器==值: element.click() 破 因爲我嘗試,也和我有一個錯誤: UnicodeDecodeError錯誤:「ASCII」編解碼器不能在位置0解碼字節0xce:順序不在範圍內(128) – fdgenie

回答

0

所以我找到了解決辦法:

def selectDropdown(self, locator, value): 
    select_box = self.driver.find_element_by_id(locator) 
    select_box.click() 
    options = select_box.find_elements_by_tag_name("li") 
    for element in options: 
     if element.text in value.decode("utf-8"): 
      element.click() 
      break