Advertisement
Guest User

Untitled

a guest
Mar 1st, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. from selenium.webdriver import ActionChains
  2. from selenium.webdriver.common.by import By
  3. from selenium.webdriver.support.ui import WebDriverWait
  4. from selenium.webdriver.support import expected_conditions as EC
  5.  
  6. class Select2(object):
  7. def __init__(self, element):
  8. self.browser = element.parent
  9. self.replaced_element = element
  10. self.element = self.browser.find_element_by_id(
  11. 's2id_{0}'.format(element.get_attribute('id')))
  12.  
  13. def click(self, element=None):
  14. if element is None:
  15. element = self.element
  16. click_element = ActionChains(self.browser)\
  17. .click_and_hold(element)\
  18. .release(element)
  19. click_element.perform()
  20.  
  21. def open(self):
  22. if not self.is_open:
  23. self.click()
  24. WebDriverWait(self.browser, 5).until(
  25. EC.visibility_of_element_located((By.XPATH, '//div[@id="select2-drop"]')))
  26.  
  27. def close(self):
  28. if self.is_open:
  29. self.click()
  30.  
  31. def select(self, name):
  32. self.open()
  33. item_divs = self.dropdown.find_elements_by_css_selector(
  34. 'ul.select2-results li div.select2-result-label')
  35. for field in item_divs:
  36. if field.text == name:
  37. self.click(field)
  38. return True
  39. return False
  40.  
  41. @property
  42. def is_open(self):
  43. try:
  44. self.element.find_element_by_xpath('//div[@id="select2-drop"]')
  45. return True
  46. except:
  47. return False
  48.  
  49. @property
  50. def dropdown(self):
  51. return self.element.find_element_by_xpath('//div[@id="select2-drop"]')
  52.  
  53. @property
  54. def items(self):
  55. self.open()
  56. item_divs = self.dropdown.find_elements_by_css_selector(
  57. 'ul.select2-results li div.select2-result-label')
  58. return [div for div in item_divs]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement