Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public WebElement $(WebElement proxyElement)
- /*
- у нас уже нету прокси-элементов
- оперируй By elementLocator
- и в дополнение к нему - $(String cssSelector)
- ведь зачастую - именно по цсс селектору элемент ищем
- */
- *********************************************
- public WebElement getWebElement(By locator){
- public List<WebElement> getWebElements(By locator){
- /*
- и вот такие методы - не будут нужны
- там где нужно поработать с элементом - будешь использовать
- $(By elementLocator) или $(String cssSelector)
- там где будем работать с кондишенами - тоже будем оперировать не прокси-списком или прокси-элементом
- а локатором
- */
- ****************************************************
- public static ExpectedCondition<WebElement> nthProxyElementHasText(final List<WebElement> elements
- public static ExpectedCondition<List<WebElement>> texts(final List<WebElement> elements, final String... texts) {
- /*
- у нас нету @FindBy элементов и списков
- а значит - наш список List<WebElement> elements
- не будет переискиваться при обращении к нему
- а значит - в таком варианте - бесполезно что-то ждать
- мы же - как первый раз получили список - тем и оперируем
- это мало что дает
- нам теперь нужны кондишены с первым параметром By elementsLocator
- в apply - в начале - получай список веб єлементов по локатору
- а дальше - все как и было
- получим - каждый вызов apply будет оперировать свежеполученным списком
- что и требуется
- посмотри на стандартные ExpectedConditions с первым параметром типа By
- */
- ****************************************************************************
- } catch (StaleElementReferenceException e) {
- return null;
- } catch (ElementNotVisibleException e){
- return null;
- } catch (IndexOutOfBoundsException e){
- /*
- можно переписать лаконичнее
- http://stackoverflow.com/questions/3495926/can-i-catch-multiple-java-exceptions-in-the-same-catch-clause
- а кроме того - у StaleElementReferenceException и ElementNotVisibleException - один предок
- вот можно лишь предка и ловить - вместо этих двух эксепшенов
- */
- ******************************
- By.xpath("//div[contains(text(),'COMPOSE')]")
- /*
- в ConciseAPI реализуй метод By byText(String text)
- и применяй его
- */
- **************************
- By.xpath("//div[contains(@class, 'asf')]"
- /*
- это перебор)
- по имени класса - и цсс селектор можно без проблем написать
- причем простой)
- */
- ********************************
- By.cssSelector("[title~='Inbox']"
- /*
- аналогично - в ConciseAPI реализуй метод By byTitle(String title)
- */
- **************************
- nthProxyElementHasText(getWebElements(By.cssSelector("[role='main'] .zA"))
- /*
- будем предавать в коднишен - не уже полученный список элементов
- а локатор - By.cssSelector("[role='main'] .zA")
- поскольку он используется дважды - объяви его как переменную пейджа
- локатор - это просто описание, как искать элемент или список
- в момент инициализации переменной значением = By.cssSelector("[role='main'] .zA")
- никакого поиска еще не осуществляется
- так что - в случае когда мы обходимся без @FinfBy элементов и списков
- применяй переменные типа By - если локатор используется несколько раз
- */
- ******************************
- public class GmailTest extends BaseTest {
- /*
- с драйвером - как раз ок работаешь
- и на уровне пейджа
- и на уровне предка тест-класса
- */
Advertisement
Add Comment
Please, Sign In to add comment