Селен C#: Как получить свойства / атрибуты класса внутри другого класса? - PullRequest
0 голосов
/ 27 марта 2020

Вот тело файла HTML

<div class ="pic">
  <a class = "img" href = "abcxyz.com">
  </a>
  <a class = "date" href = "asdfg.com">
     <span> Feb 02 </span>
  </a>
</div>

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

List<IWebElement> imgElements = driver.FindElements(By.ClassName("img")).ToList();
foreach (IWebElement imgElement in imgElements)
{
    img_URL = imgElement.GetAttribute("href").;
    Console.WriteLine(img_URL);
}

Но теперь я хочу получить как ссылки, так и информацию из класса "img" и класса "date". Пожалуйста, помогите мне оптимизировать это. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 27 марта 2020

Вы можете создать метод для разрешения определенных c тегов, например так (я использую его для разрешения меток):

public static IWebElement ResolveLabelFromElement(this IWebElement labelValuePairElement)
        {
            By by = By.TagName("label");
            var label = labelValuePairElement.FindElement(by);

            return label;
        }

И использовать так:

var labelElement = element.ResolveLabelFromElement();
0 голосов
/ 27 марта 2020

Поскольку оба класса img и date находятся в одном родительском классе pic, вы можете извлечь оба значения из списка, используя общий xpath, а затем выполнить итерацию по этому списку, чтобы получить нужные значения. .
Вы можете сделать это следующим образом:

List<IWebElement> imgElements = driver.FindElements(By.Xpath("//div[@class='pic']//a")).ToList();
foreach (IWebElement imgElement in imgElements)
{
    img_URL = imgElement.GetAttribute("href");
    Console.WriteLine(imgElement.Text);
    Console.WriteLine(img_URL);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...