Перейти к содержимому

Фотография

Действия обратные поиску элемента


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 Alekssaf

Alekssaf

    Новый участник

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Сафронов Алексей

Отправлено 19 апреля 2012 - 14:59

Здравствуйте.
Подскажите, пожалуйста, а как действовать в том случае, если я хочу получить или установить значение параметру в найденном элементе?
То есть вот в таком допустим случае :
<a id="ctl00l" target_id="58810" value="">

</a>.

Элемент по ID я нашел, а могу ли теперь как-то задать значение для Value и узнать значение для target_id? (Webdriver и С#).

Спасибо.
  • 0

#2 Черная Команда

Черная Команда

    Новый участник

  • Members
  • Pip
  • 24 сообщений
  • ФИО:Черная Команда

Отправлено 19 апреля 2012 - 15:35

Здравствуйте.
Подскажите, пожалуйста, а как действовать в том случае, если я хочу получить или установить значение параметру в найденном элементе?
То есть вот в таком допустим случае :
<a id="ctl00l" target_id="58810" value="">

</a>.

Элемент по ID я нашел, а могу ли теперь как-то задать значение для Value и узнать значение для target_id? (Webdriver и С#).

Спасибо.


Изменение аттрибута:
public WebElement getElement(By locator) {
return driver.findElement(locator);
}

public void setAttribute(By locator, String attribute, String value) {
((JavascriptExecutor) getDriver()).executeScript("arguments[0].setAttribute('" + attribute
+ "',arguments[1]);",
getElement(locator),
value);
}

Вернуть значение аттрибута
getElement(locator).getAttribute(String nameOfAttribute);

Попробуйте
  • 1

#3 Alekssaf

Alekssaf

    Новый участник

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Сафронов Алексей

Отправлено 20 апреля 2012 - 07:10

Спасибо, помогло, но возник еще один вопрос. А как выбрать родительский элемент в XPath? То есть имею такую ситуацию
<a id="ctl00" target_id="58810">
<span id="ctl001>AutoArticle1</span>
</a>

driver.FindElement(By.XPath("//span[text()='AutoArticle']")).GetAttribute("target_id") - не работает(но элемент находится нормально), т.к. нужный мне атрибут в теге А , а к тегу а мне не обратиться напрямую, так как атрибута ИД я не знаю. Вопрос в том можно ли составить хпасс, который проверит текст ребенка , то есть span, а сам возьмет значения из атрибута, находящегося в родителе? Спасибо.
  • 0

#4 soleksenko2702

soleksenko2702

    Постоянный участник

  • Members
  • PipPipPip
  • 193 сообщений
  • ФИО:Олексенко Сергей

Отправлено 20 апреля 2012 - 09:24

Спасибо, помогло, но возник еще один вопрос. А как выбрать родительский элемент в XPath? То есть имею такую ситуацию
<a id="ctl00" target_id="58810">
<span id="ctl001>AutoArticle1</span>
</a>

driver.FindElement(By.XPath("//span[text()='AutoArticle']")).GetAttribute("target_id") - не работает(но элемент находится нормально), т.к. нужный мне атрибут в теге А , а к тегу а мне не обратиться напрямую, так как атрибута ИД я не знаю. Вопрос в том можно ли составить хпасс, который проверит текст ребенка , то есть span, а сам возьмет значения из атрибута, находящегося в родителе? Спасибо.


Можно. Попробуйте такой XPath:
(//span[text()='AutoArticle'])/ancestor::a
  • 1

#5 Черная Команда

Черная Команда

    Новый участник

  • Members
  • Pip
  • 24 сообщений
  • ФИО:Черная Команда

Отправлено 20 апреля 2012 - 09:43

Спасибо, помогло, но возник еще один вопрос. А как выбрать родительский элемент в XPath? То есть имею такую ситуацию
<a id="ctl00" target_id="58810">
<span id="ctl001>AutoArticle1</span>
</a>

driver.FindElement(By.XPath("//span[text()='AutoArticle']")).GetAttribute("target_id") - не работает(но элемент находится нормально), т.к. нужный мне атрибут в теге А , а к тегу а мне не обратиться напрямую, так как атрибута ИД я не знаю. Вопрос в том можно ли составить хпасс, который проверит текст ребенка , то есть span, а сам возьмет значения из атрибута, находящегося в родителе? Спасибо.

Попробуйте так

//parent::span[text()='AutoArticle']

Но лучше пробуйте достучаться именно к тэгу а :)
  • 1

#6 soleksenko2702

soleksenko2702

    Постоянный участник

  • Members
  • PipPipPip
  • 193 сообщений
  • ФИО:Олексенко Сергей

Отправлено 20 апреля 2012 - 09:56


Спасибо, помогло, но возник еще один вопрос. А как выбрать родительский элемент в XPath? То есть имею такую ситуацию
<a id="ctl00" target_id="58810">
<span id="ctl001>AutoArticle1</span>
</a>

driver.FindElement(By.XPath("//span[text()='AutoArticle']")).GetAttribute("target_id") - не работает(но элемент находится нормально), т.к. нужный мне атрибут в теге А , а к тегу а мне не обратиться напрямую, так как атрибута ИД я не знаю. Вопрос в том можно ли составить хпасс, который проверит текст ребенка , то есть span, а сам возьмет значения из атрибута, находящегося в родителе? Спасибо.

Попробуйте так

//parent::span[text()='AutoArticle']

Но лучше пробуйте достучаться именно к тэгу а :)


Да, можно и parent использовать, но XPath тогда будет выглядеть так:

//span[text()='AutoArticle']/parent::a

Разница между parent и ancestor лишь в том что parent возвращает одного предка, а ancestor - множество.
  • 1

#7 Alekssaf

Alekssaf

    Новый участник

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Сафронов Алексей

Отправлено 20 апреля 2012 - 11:18

Спасибо за ответы. Все заработало.
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных