2013-02-19 3 views
1

У меня есть довольно специфическая проблема как для селена, так и для xpath.Selenium select dropdown element using xpath string

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

Все элементы формы, хотя и разработаны таким же образом.

<table> 
<tr><td> Title </td></tr> 
<tr><td> input/dropdown/etc </td></tr> 
</table> 

Он специфика

<tr> 
<td width="34%" valign="top" bgcolor="#ffffc7"> 
<span class="bold">Status wniosku</span> 
<span>Test</span> 
</td> 
<td width="66%" bgcolor="#ffffc7"> 
<select id="ctl00_ContentPlaceHolder_2041" class="baseCtrl" name="ctl00$ContentPlaceHolder$2041"> 
<option value="" selected="selected">- wybierz -</option> 
<option value="save">tylko zapisz</option> 
<option value="pj">zapisz i wyślij do PJ</option> 
</select> 
<span> 
</span> 
<span id="ctl00_ContentPlaceHolder_ctl19" class="validation" style="display:none;">Określ status wniosku</span> 
<span id="ctl00_ContentPlaceHolder_ctl20" class="validation" style="display:none;"></span> 
<span></span> 
</td> 
</tr> 

Использование http://www.xmlme.com/XpathTool.aspx Я разработал XPath для раскрывающихся элементов.

//span[text()='LABELNAME']/ancestor::*[1]/following-sibling::*/select/option[text()='TEXTVALUE'] 

Я бы хотел использовать Selenium, чтобы щелкнуть элемент, который я нашел. Я пробовал Selenium.Click() и варианты Selenium.Select(), но без результатов.

Мой вопрос в том, правильно ли разработан xpath? Если да, то как мне его выполнить, используя Selenium? Thx за помощь.

+0

В вашем примере HTML выше, чем * точным * элемент вы пытаетесь нажать? Трудно сказать. Также, какой браузер вы используете для этого? – Arran

+0

Я использую интернет-проводник. Я пытаюсь щелкнуть один из вариантов раскрывающегося списка. Я не уверен, должен ли я щелкнуть по нему или выбрать его. В моем расширении я пытаюсь нажать «tylko zapisz». Selenium.Click ("// span [text() = 'Status wniosku']/ancestor :: * [1]/next-sibling :: */select/option [текст() = 'tylko zapisz'"); – Shuffler

ответ

1

Try ниже XPath для выбора второго варианта

"//span[text()='Test']/ancestor::*[1]/following-sibling::*/selec‌​t" 

Ex:

Selenium.Select("//span[text()='Test']/ancestor::*[1]/following-sibling::*/selec‌​t","label=Save"); 
+0

Это не работает, но это дало мне представление о том, как это должно работать :) Selenium.Select ("// span [text() = 'Test']/ancestor :: * [1]/follow-sibling :: */выберите», "метка = Сохранить"); Пожалуйста, отредактируйте свой пост с обновлением, чтобы я мог пальцем вверх! :) – Shuffler

+0

Мое удовольствие помочь вам .. :) Я отредактировал свой ответ bcz, Это может быть полезно для другого. – Santoshsarma