кто нибудь может подсказат как можно кликнуть на ссылку внутри ТехView. перепробал кучу всего и пока ничего не работает.
Text = “Want even more coverage? Enjoy a worry free experience with Service Protection. Call 866.580.1284 today and you’ll experience priority support and even get your service call fees waived. For more information visit optimum.net/service.”
resource-id = “com.optimum.rdvr.mobile:id/description”
class = “TextView”
Uploaded link for tree(скриншот этого блока + дерева элементов). исправил xpath, дело в том что он находит весь блок элемента, а мне надо внутри него ссылку click only
driver.findElement(By.xpath(“//TextView[contains(text(),‘Optimum Service’)]”)).click()
Rabotaet, no tol’ko klikaet na TextView element
задачку понял, блин жаль девайс не захватил сегодня с собой домой, сейчас подумаю…
на ум приходить что-то такое:
driver.findElement(By.id("com.optimum.rdvr.mobile:id/description")).findElement(
By.linkText("optimum.net/service"));
// или
driver.findElement(By.linkText("optimum.net/service"));
By.linkText - желательно никогда не юзать (или юзать в крайних случаях), потому что у текста есть свойство перелазить на другую строку или меняться, тест получается не стабильным. Но тут мобайл, наверное данная проблема тут не столь актуальна…
Я не думаю для Appium есть такая комманда By.linkText он мне выдал:
org.openqa.selenium.UnsupportedCommandException: Invalid locator strategy: link text
а там точка тоже является ссылкой? Надо сейчас попробовать поднять на эмуляторе с подобным текстом и линком, интересно, никогда еще не сталкивался с таким.
Когда-то тапал по линку названия страны и там была часть текста, к примеру +38(05) Ukraine, тапал вот так:
дело в том если я использую driver.findElement(By.xpath(“//TextView[text()=‘optimum.net/service.’]”)).click;
Он clicks на середину элемента по XPATH driver.findElement(By.xpath(“//TextView[text()=‘optimum.net/service.’]”).
и этот xpath рабочий. а мне на техт внутри него надо. если техт маленький то проблем нет, а у меня техт на 5 строк и ссылка в конце только
driver.findElement(By.xpath(“//TextView[text()=‘optimum.net/service.’]/*”)).click
takaya ne poidet, on je ne videt element po etomy xpath.
driver.findElement(By.xpath(“//TextView[contains(text(),‘Optimum Service’)]”)).click() absolutno rabochii tolko on clickaet na element po etomy xpath( v centr ego). a y mena element v 5 strochek. i link v samom konce
Если у Вас нет элемента внутри TextView, то, боюсь, нужно использовать координаты. Пробуйте кликнуть в нижнюю левую часть элемента.
WebElement element = driver.findElement(MobileBy.AndroidUIAutomator("textContains(\"optimum.net/service\")"));
Point point = element.getLocation();
int x = point.x + 1;
int y = point.y + element.getSize().getHeight() - 1;
new TouchAction(driver).tap(x, y).perform();
Это решение не универсально. Необходимо будет продумывать разные варианты для разных размеров экрана, поскольку этот линк может быть не только в левом нижнем углу.
aleksey_ilyenko,
Da, ty prav. Na raznyx devisax v raznyx mestax etot link, poetomy I dumal chto to yniversalnoe naiti - chto b ne podgonat pod vse devasy. I dymal chto to vrode kak na WEB mojno bylo naiti xpath of text vnutri xpath. Navernoe pridetsa delat HARD WAY ((.