julia_v_iluhina

Untitled

Jan 9th, 2017
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.75 KB | None | 0 0
  1. public WebElement $(WebElement proxyElement)
  2. /*
  3.     у нас уже нету прокси-элементов
  4.     оперируй By elementLocator
  5.  
  6.     и в дополнение к нему - $(String cssSelector)
  7.     ведь зачастую - именно по цсс селектору элемент ищем
  8. */
  9. *********************************************
  10.     public WebElement getWebElement(By locator){
  11.     public List<WebElement> getWebElements(By locator){
  12. /*
  13.     и вот такие методы - не будут нужны
  14.  
  15.     там где нужно поработать с элементом - будешь использовать
  16.     $(By elementLocator) или $(String cssSelector)
  17.  
  18.     там где будем работать с кондишенами - тоже будем оперировать не прокси-списком или прокси-элементом
  19.     а локатором
  20. */
  21. ****************************************************
  22.     public static ExpectedCondition<WebElement> nthProxyElementHasText(final List<WebElement> elements
  23.     public static ExpectedCondition<List<WebElement>> texts(final List<WebElement> elements, final String... texts) {
  24. /*
  25.     у нас нету @FindBy элементов и списков
  26.  
  27.     а значит - наш список List<WebElement> elements
  28.     не будет переискиваться при обращении к нему
  29.     а значит - в таком варианте - бесполезно что-то ждать
  30.     мы же - как первый раз получили список - тем и оперируем
  31.     это мало что дает
  32.  
  33.     нам теперь нужны кондишены с первым параметром By elementsLocator
  34.     в apply - в начале - получай список веб єлементов по локатору
  35.     а дальше - все как и было
  36.     получим - каждый вызов apply будет оперировать свежеполученным списком
  37.     что и требуется
  38.  
  39.     посмотри на стандартные ExpectedConditions с первым параметром типа By
  40.  
  41. */
  42. ****************************************************************************
  43.  
  44.                 } catch (StaleElementReferenceException e) {
  45.                     return null;
  46.                 } catch (ElementNotVisibleException e){
  47.                     return null;
  48.                 } catch (IndexOutOfBoundsException e){
  49. /*
  50.     можно переписать лаконичнее
  51.     http://stackoverflow.com/questions/3495926/can-i-catch-multiple-java-exceptions-in-the-same-catch-clause
  52.  
  53.     а кроме того - у StaleElementReferenceException и ElementNotVisibleException - один предок
  54.     вот можно лишь предка и ловить - вместо этих двух эксепшенов
  55. */
  56. ******************************
  57. By.xpath("//div[contains(text(),'COMPOSE')]")
  58. /*
  59.     в ConciseAPI реализуй метод By byText(String text)
  60.     и применяй его
  61. */
  62. **************************
  63. By.xpath("//div[contains(@class, 'asf')]"
  64. /*
  65.     это перебор)
  66.     по имени класса - и  цсс селектор можно без проблем написать
  67.     причем простой)
  68. */
  69. ********************************
  70. By.cssSelector("[title~='Inbox']"
  71. /*
  72.     аналогично - в ConciseAPI реализуй метод By byTitle(String title)
  73. */
  74. **************************
  75. nthProxyElementHasText(getWebElements(By.cssSelector("[role='main'] .zA"))
  76. /*
  77.     будем предавать в коднишен - не уже полученный список элементов
  78.     а локатор - By.cssSelector("[role='main'] .zA")
  79.     поскольку он используется дважды - объяви его как переменную пейджа
  80.  
  81.     локатор - это просто описание, как искать элемент или список
  82.     в момент инициализации переменной значением = By.cssSelector("[role='main'] .zA")
  83.     никакого поиска еще не осуществляется
  84.     так что - в случае когда мы обходимся без @FinfBy элементов и списков
  85.     применяй переменные типа By - если локатор используется несколько раз
  86. */
  87. ******************************
  88. public class GmailTest extends BaseTest {
  89. /*
  90.      с драйвером - как раз ок работаешь
  91.      и на уровне пейджа
  92.      и на уровне предка тест-класса
  93. */
Advertisement
Add Comment
Please, Sign In to add comment