utils.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. from selenium.webdriver.common.by import By
  2. from selenium.webdriver.support import expected_conditions as EC
  3. from selenium.webdriver.support.ui import WebDriverWait
  4. def check_navigator(driver):
  5. """检查navigator属性"""
  6. script = "return window.navigator.webdriver"
  7. return driver.execute_script(script)
  8. def until_wait(
  9. driver,
  10. *,
  11. xpath=None,
  12. classname=None,
  13. text=None,
  14. timeout=None
  15. ):
  16. """
  17. 显示等待页面加载,否则抛出TimeoutException
  18. :param driver: 浏览器驱动
  19. :param xpath: xpath规则,页面等待特征
  20. :param classname: class属性名称,页面等待特征
  21. :param text: 期待的文本
  22. :param timeout: 超时时间
  23. :return:
  24. """
  25. _timeout = (timeout or 60)
  26. wait = WebDriverWait(driver, _timeout, 0.2)
  27. if xpath is not None:
  28. locator = (By.XPATH, xpath)
  29. if text is not None:
  30. wait.until(EC.text_to_be_present_in_element(locator, text))
  31. else:
  32. wait.until(EC.presence_of_element_located(locator))
  33. elif classname is not None:
  34. locator = (By.CLASS_NAME, classname)
  35. if text is not None:
  36. wait.until(EC.text_to_be_present_in_element(locator, text))
  37. else:
  38. wait.until(EC.presence_of_element_located(locator))
  39. def new_window(driver):
  40. """新的窗口"""
  41. driver.execute_script('window.open();')
  42. handles = driver.window_handles
  43. driver.switch_to.window(handles[-1])
  44. def get_user_agent(driver):
  45. return driver.execute_script("return navigator.userAgent;")
  46. def get_title(driver):
  47. return driver.execute_script('return document.title')