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

Фотография

Как поучить стоки в таблице


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

#1 Ivanbel

Ivanbel

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

  • Members
  • Pip
  • 14 сообщений
  • ФИО:Куст Иван

Отправлено 27 февраля 2018 - 06:23

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

 

 

КОД

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Support.UI;
 
 
namespace Proxy
{
    public partial class Form1 : Form
    {
        IWebDriver Browser;
        Random rnd = new Random();
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Browser = new OpenQA.Selenium.Chrome.ChromeDriver();
           Browser.Navigate().GoToUrl("http://spys.one/free-proxy-list/RU/");
 
IWebElement selectElem = Browser.FindElement(By.ClassName("clssel")); 
        SelectElement select = new SelectElement(selectElem);
            select.SelectByText("500");
 
            List<IWebElement> New = Browser.FindElements(By.TagName("tr")).ToList();
 
            for (int i = 0; i < New.Count; i++)
            {
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                var Sot = Browser.FindElements(By.ClassName("spy14"));
                MessageBox.Show("Цикл"+ Sot);

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Тут выводит постоянно одну и туже строку

 
            }
 
 
 
 
        }
    }
}
 

  • 0

#2 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 27 февраля 2018 - 06:54

А с чего бы ему тут разные строки находить?

Вы смотрите кол-во элементов tr, а потом без какой либо связи с ними - просто выводите Х раз переменную Sot, которую ищите всегда одинаково. С чего бы ему вдруг ни с того, ни с сего по одному и тому же локатору разные элементы находить? Страница то та же самая, DOM тот же самый, поиск тот же самый.


  • 1

#3 Ivanbel

Ivanbel

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

  • Members
  • Pip
  • 14 сообщений
  • ФИО:Куст Иван

Отправлено 27 февраля 2018 - 08:01

подскажите как сделать связь  и этими элементами ели не затруднит пример кода


  • 0

#4 Ivanbel

Ivanbel

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

  • Members
  • Pip
  • 14 сообщений
  • ФИО:Куст Иван

Отправлено 27 февраля 2018 - 08:02

А с чего бы ему тут разные строки находить?

Вы смотрите кол-во элементов tr, а потом без какой либо связи с ними - просто выводите Х раз переменную Sot, которую ищите всегда одинаково. С чего бы ему вдруг ни с того, ни с сего по одному и тому же локатору разные элементы находить? Страница то та же самая, DOM тот же самый, поиск тот же самый.

подскажите как сделать связь  и этими элементами ели не затруднит пример кода


  • 0

#5 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 27 февраля 2018 - 12:17

Во-первых, локаторы tr и spy14 подобраны  не очень точно. Например, первый spy14 вернем вам строку "Next page", а первый tr - баннер.

 

Во-вторых, чтобы выводило разные строки в цикле, а не одну и ту же, нужно использовать счетчик, а вы про него позабыли. Причем как счетчик строк, так и счетчик элементов spy14.

А сейчас у вас всегда ищет первый элемент spy14, даже без привязки к строке.

 

Если напишите какого вида строку нужно получить в итоге, попробуем направить вас точнее.


  • 1

#6 Ivanbel

Ivanbel

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

  • Members
  • Pip
  • 14 сообщений
  • ФИО:Куст Иван

Отправлено 27 февраля 2018 - 13:09

yr

 

Во-первых, локаторы tr и spy14 подобраны  не очень точно. Например, первый spy14 вернем вам строку "Next page", а первый tr - баннер.

 

Во-вторых, чтобы выводило разные строки в цикле, а не одну и ту же, нужно использовать счетчик, а вы про него позабыли. Причем как счетчик строк, так и счетчик элементов spy14.

А сейчас у вас всегда ищет первый элемент spy14, даже без привязки к строке.

 

Если напишите какого вида строку нужно получить в итоге, попробуем направить вас точнее.

 

 

 

нужно получить Proxy address:port   и    Latency**


  • 0

#7 Ivanbel

Ivanbel

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

  • Members
  • Pip
  • 14 сообщений
  • ФИО:Куст Иван

Отправлено 27 февраля 2018 - 13:09

нужно получить Proxy address:port   и    Latency**


  • 0

#8 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 27 февраля 2018 - 15:09

В общем, вместо списка всех строк на странице, вам нужен список строк из нужной таблицы. Для этого можно использовать, например, xpath-локатор 

List<IWebElement> New = Browser.FindElements(By.XPath("//table[2]//table//tr[contains(@class,'spy1x')]")).ToList();

Но тут проблема в том, что первые 2-е строки вам не нужны, поэтому цикл начинать нужно с 3-ей строки, то есть i=2.

 

Затем собственно ваш цикл, где используем элементы

New[i].FindElement(By.XPath("/td[1]"));        //Proxy adsress:port
New[i].FindElement(By.XPath("/td[6]"));        //Latency

И, наверное, вам нужно получать не столько сами элементы, а их текст, для этого не забываем использовать свойство элемента Text.


  • 1


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

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