Selenium FindElement по родительскому div - PullRequest
0 голосов
/ 25 апреля 2018

Попытка найти элемент ссылки "a href". Фрагмент кода:

<div id="contact-link">
    <a href="http://automationpractice.com/index.php?controller=contact" title="Contact Us">Contact us</a>
</div>

Мне удалось сделать это:

  1. Driver.FindElement(By.XPath("//*[@title='Contact Us']")).Click();

2. Driver.FindElement(By.XPath("//a[@href='http://automationpractice.com/index.php?controller=contact']")).Click();

3. Driver.FindElement(By.XPath("//*[text()='Contact us']")).Click();

Может кто-нибудь сказать мне, как я могу получить, сначала получив родительский div , а затем найти, что находится внутри этого div (перейдя сверху вниз)

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Хотя вы уже приняли ответ, я хотел бы остановиться на некоторых моментах, касающихся Xpath и cssSelector. Вы всегда должны выбрать cssSelector более Xpath :

Вот cssSelector для вашего требования:

div[id='contact-link']>a

Код:

Driver.FindElement(By.CssSelector("div[id='contact-link']>a")).Click();

Подробнее о cssSelector: https://www.w3schools.com/cssref/css_selectors.asp Разницу между Xpath и cssSelector вы можете прочитать из этой SO записи: Разница между Xpath и cssSelector

0 голосов
/ 25 апреля 2018

Таким образом, с помощью xpath вы пытаетесь скопировать структуру HTML.Что вам нужно:

//div[@id='contact-link']/a

Это вернет href под div.Предполагая, что это всего 1, это путь.Если вы хотите пойти немного дальше, попробуйте:

//div[@id='contact-link']/a[@title='Contact Us']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...