2016-10-16 2 views
0

Я пытаюсь, чтобы моя программа сидела на веб-странице и дождалась появления определенного тега в статье. Проблема в том, что мне нужно, чтобы Selenium проверял, что статья содержит два имени тега перед щелчком, вот где я в тупике. То, как у меня есть моя настройка кода прямо сейчас, она нигде не нажимает. Он просто сидит на странице, я подозреваю, потому что есть более одной статьи с тем же самым основным именем тега, которое я пытаюсь найти. Вот HTML:Selenium - Одинаково <articles>, C#

<article> 
    <div class ="inner-article"> 
     <a href ="/shop/shirts/iycbmgtqw/x9vdawcjg" style="height:150px;"> 
     <img alt="Xrtqh7ar444" height="150" src="//d17ol771963kd3.cloudfront.net/120885/vi/xrTQH7Ar444.jpg" width="150"> 
     </a> 
     <h1> 
     <a href="/shop/shirts/iycbmgtqw/x9vdawcjg" class="name-link">EXAMPLE_CODE</a> 
     </h1> 
     <p> 
     <a href="/shop/shirts/iycbmgtqw/x9vdawcjg" class="name-link">EXAMPLE_COLOUR</a> 
     </p> 
    </div> 
</article> 

Все остальные предметы на этой странице имеют одинаковый класс, а некоторые имеют одинаковые имена тегов. Я хочу найти, когда в статье есть определенная комбинация из двух тегов. Я понимаю, что xPath является вариантом, но я хотел бы закодировать его, прежде чем знать xPath, где имя элемента является единственной доступной информацией.

И вот код, я работаю с на данный момент:

driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromMinutes(10)); 


IWebElement test = driver.FindElement(By.TagName(textBox12.Text)); 
test.Click(); 

где textBox12.Text является "EXAMPLE_CODE". Правильно ли я полагаю, что WebDriver ничего не нажимает, потому что существует более одного элемента с именем tagExAMP «EXAMPLE_CODE», и есть ли способ, чтобы сначала просмотреть «EXAMPLE_CODE», а затем проверить вторичное: «EXAMPLE_COLOUR», ?

Спасибо!

ответ

0

Вы используете By.TagName неправильно. Тег относится к типу элемента, который вы пытаетесь найти. В этом случае для ссылки это «а». Или в случае div это «div». Правильный способ поиска с тэгом для ссылки будет - By.TagName("a").

Необходимо сопоставить текст, и вам нужно будет использовать xpath. Предполагая, что код уникален, вы должны попробовать.

XPath, чтобы получить код HREF - //div[class='inner-article']/h1/a[.=EXAMPLE_CODE]

XPath, чтобы получить цвет HREF - //div[class='inner-article']/h1/a[.=EXAMPLE_CODE]/following-sibling::a

+0

Спасибо за ответ! Это имеет смысл, я попробую использовать xPath. Я все еще запутался в том, как настроить код для использования обоих xpaths, чтобы определить, какой веб-элемент выбрать? –

+0

@ClarkMcMaster Можете ли вы уточнить, что вас трогает? – Grasshopper

+0

Вот как выглядит мой код: –

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