2015-03-13 2 views
1

Это код HTML.Нажав на текст, содержащийся в span и div

<div class="help-service-content"> 
<div class="help-content"> 
<a name="61AC9B9656AE"></a> 
<h1>Help Contents</h1> 
<div>  
<div id="9F38FD"> 
<a name="9F38FD"></a> 
</div> 
<h2> 
<span><a href="/register.html">Register</a></span> 
</h2> 
<div id="20D4FF"> 
<a name="20D4FF"></a> 
</div> 
<h2> 
<span><a href="/subscribe.html">Subscribe</a></span> 
</h2> 
</div> 
</div> 
</div> 

Я пытался нажать на «Register» текста с помощью Appium на мой андроид мобильных приложений, но все это в конечном итоге делает это подчеркивание текста. И ссылка не открывается. Это похоже на вопрос, поставленный here. Итак, я попробовал следующее, и это тоже не сработало.

WebElement element = DeviceWrapper.getAppiumDriver().findElement(By.xpath("span")); 
element.click(); 

Просто интересно, есть ли у кого-нибудь идеи. Спасибо за ваше время.

ответ

1

Попробуйте найти a элемент (не span) по тексту ссылки:

DeviceWrapper.getAppiumDriver().findElement(By.linkText("Register")); 

Или by xpath:

DeviceWrapper.getAppiumDriver().findElement(By.xpath("//span/a[. = 'Register']")); 
+0

Я попробовал и бросил Appium ошибку говоря «Invalid стратегия локатора: Текст ссылки». Я запускаю Appium версии 1.3.5. – Indrajeet

+0

@Indrajeet, пожалуйста, попробуйте обновление. – alecxe

+0

Обновление не сработало. Я использую android.webkit.webview для рендеринга HTML в мобильном приложении. Когда я запустил код, Appium вернулся, сказав, что «Не удалось найти элемент, используя предоставленную стратегию». Однако я благодарю вас за ваши предложения. – Indrajeet

0

Вам необходимо перейти на веб-контекста для того, чтобы работать с WebViews ,

Чтобы получить текущий контекст:

DeviceWrapper.getAppiumDriver().getContext(); 

Чтобы получить доступные контексты

DeviceWrapper.getAppiumDriver().getContextHandles(); 

Предположим, у вас имеется "WEBVIEW_0" контекст. Чтобы переключиться на этот контекст:

DeviceWrapper.getAppiumDriver().context("WEBVIEW_0"); 

После этого вы можете работать с WebView этого контекста.

Источник:http://appium.io/slate/en/master/?java#available-contexts

Примечания: на прошивке вы имеете запустить ios_webkit_debug_proxy_server с портом 27753. Вы можете запустить его из исходного кода Appium: https://github.com/appium/appium/blob/master/bin/ios-webkit-debug-proxy-launcher.js
или как отдельная утилита: https://github.com/google/ios-webkit-debug-proxy

+0

Я запустил getContextHandles(), чтобы получить список доступных контекстов. Один из них - веб-просмотр. Однако, когда я пытаюсь переключиться в контекст Webview, программа Java терпит неудачу. При обработке команды произошла неизвестная ошибка на стороне сервера. (Исходная ошибка: не получил перенаправление сеанса из Chromedriver) (ПРЕДУПРЕЖДЕНИЕ: сервер не предоставил никакой информации о стеке) – Indrajeet

+0

Какой у вас код? –

+0

logger.info («Показать доступные контексты» + DeviceWrapper.getAppiumDriver(). GetContextHandles()); logger.info («Показать контекст по умолчанию» + DeviceWrapper.getAppiumDriver(). getContext()); DeviceWrapper.getAppiumDriver(). Контекст ("WEBVIEW_com.example.sample.webviewapp "); Я создал фиктивное приложение для Android Android. – Indrajeet

Смежные вопросы