var table = project.Tables["base"];
for(int i = 0; i < table.RowCount; i++)
{
int col_num = 0; //порядковый номер колонки
string cur_string = table.GetCell(col_num,i); //текущая строка которую обрабатываем
//project.SendInfoToLog(cur_string);
if(cur_string.Contains(project.Variables["partSite"].Value))
{
return "true";
}
}
return "false";
Ребята, надо отредактировать сниппет:
Сейчас сниппет ищет в таблице в указанном столбце ячейку, которая содержит переменную и если находит, говорит тру, если нет - фалс. А нужно, чтобы если находит, то выводил бы номер строкиКод:var table = project.Tables["base"]; for(int i = 0; i < table.RowCount; i++) { int col_num = 0; //порядковый номер колонки string cur_string = table.GetCell(col_num,i); //текущая строка которую обрабатываем //project.SendInfoToLog(cur_string); if(cur_string.Contains(project.Variables["partSite"].Value)) { return "true"; } } return "false";
var table = project.Tables["Tables1"];
for(int i = 0; i < table.RowCount; i++)
{
string cur_string = table.GetCell(0 ,i);
if(cur_string.Contains(project.Variables["partSite"].Value))
{
return i.ToString();
}
}
return "false";
что подразумевается под не частичным ?Забыл написать, совпадение с переменной должно быть не частичным, а точным. Сейчас и в моем сниппете тоже частичное совпадение, а нужно точное
Ну, например, в переменной "Casio" а в Таблице есть "Casio Наручные", и сниппет отдает порядковый номер строки. А нужно, чтобы он шел дальше, пока не найдет просто "Casio", и только тогда отдаст номер строки той ячейки, у которой совпадение с переменной точное
var table = project.Tables["Tables1"];
for(int i = 0; i < table.RowCount; i++)
{
string cur_string = table.GetCell(0 ,i);
if(cur_string == project.Variables["partSite"].Value)
{
return i.ToString();
}
}
return "false";
HtmlElement element = tab2.FindElementByXPath(".//input[@id='bonus']", 0).Click();
if (element.IsVoid) return null;
По красной пошло. А чтобы нажалось на кнопку, если есть кнопка, и пошло выполнение вперёд, к следующему коду, не знаю как сделатьКод:HtmlElement element = tab2.FindElementByXPath(".//input[@id='bonus']", 0); if (element.IsVoid) return null;
а где произвольный текст ??? если он уже есть значит он в первом столбце, ты как то немного не понятно объясняешь, ты примеры показывай что есть и что надоПомогите пожалуйста с таким сниппетом:
Есть таблица с 1 столбцом, в котором произвольный текст. Нужно сделать дубль столбца, в котором разделить фразы по словам, свести в один столбец, и удалить повторения. Таким образом, получится 2 столбца в таблице, в первом - только одно слово, а во втором можно найти фразу, в котором это слово встречается.
и ??так если мне нужно произвольный текст преобразовать: вывести его по словам, удалив предварительно дубли?
зачем менять местами, перезаписывать для чего ??Сори, мы наверное не поняли друг друга, и это наверное моя вина, где-то я не так выразился. Изначально мне нужен был сниппет, который берет таблицу, делает дубль первого столбца, и с этой копией совершает преобразования и на выходе отдает преобразованный столбец (где исходный текст разбит по словам, удалены дубли и все сведено в 1 столбец), и рядом - не преобразованный, исходный.
аха сейчас догнал, только у меня опять ворос один, зачем перезаписывать если можно произвольный сразу записывать во вторую колонкусразу результат. а на входе был просто один столбец произвольного текста (который сейчас второй, справа)
А как удалить здесь дубли, и 2-е - как записать значение из переменной в каждый список.C#:string [] lists = new [] {"Список 1", "Список 2", "Список N"}; foreach (var list in lists){ project.Lists[list].Clear(); }
ты прав, возможно стоит переобдумать логику шаба. Ведь и действительно может быть миллион строк. А как еще можно работать? С базами данных? Вместо таблиц
А смысл такой. До обработки (1 столбец):
Произвольный текст
Любой текст
Случайный текст
После обработки (2 столбца):
Произвольный | Произвольный текст
Любой | Любой текст
Случайный | Случайный текст
текст |
То есть, мы взяли первый столбец, разбили текст по словам, потом все объединили в один столбец, получилось:
Произвольный
текст
Любой
текст
Случайный
текст
ну а после удаления дублей получилось то, что выше в итоговом варианте.
int index = 0;
var sourseList = new List<string>();
var outputList = new List<string>();
var table = project.Tables["Tables1"];
for(int i = 0; i < table.RowCount; i++)
{
index++;
var cells = table.GetCell(1, i);
var rezult = cells.Split(new String [] {" "}, StringSplitOptions.RemoveEmptyEntries);
sourseList.AddRange(rezult);
}
sourseList.Where(s=>!string.IsNullOrWhiteSpace(s))
.Distinct().ToList().ForEach(s=>outputList.Add(s.Trim()));
for(int i = 0; i < outputList.Count; i++)
{
if (index <= i)
{
table.AddRow("");
}
var str = outputList[i];
table.SetCell("A", i, str);
}
string cookie = "unsupported_browsers_notif=true; _ga=GA1.2.1474281938.1488966463; language=en; express:sess=eyJ1c2VybmFtZSI6InNpZWJ1dGdlb2dvbDE5ODIiLCJzZXNzaW9uSWQiOiJlYTUzMjE1N2EyYmVlNTg4MGJjZTRiNWVlM2YzNDdiODQ2ZGZiYjc5NWFmZDg1NDYxN2RjMWQ3MjQwZWE0YmFhIiwic2V0dGluZ3MiOnsic291bmRzRW5hYmxlZCI6dHJ1ZSwiY2FsbGluZ0VuYWJsZWQiOmZhbHNlfX0=; express:sess.sig=j_S-TERnecHiso0ZaslmywGsktk; newUser.siebutgeogol1982=new; NREUM=s=1488966487418&r=46884&p=0; _gat=1";
string useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729)";
var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://www.textnow.com/api/users/siebutgeogol1982/phone?strict=0");
httpWebRequest.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
httpWebRequest.Method = "PUT";
httpWebRequest.Headers.Add("Cookie", cookie);
httpWebRequest.UserAgent = useragent;
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = "json=%7B%22area_code%22%3A%22912%22%7D";
streamWriter.Write(json);
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var responseText = streamReader.ReadToEnd();
return responseText;
}
Проблему сам решил, всем спасибо.Подниму еще раз нерешенную проблему. Есть ли возможность прочитать весь ответ PUT запроса с ошибочным заголовком. Прикладываю рабочий код, который отдает верную ошибку. Только необходимо выдернуть содержание ответа
C#:string cookie = "unsupported_browsers_notif=true; _ga=GA1.2.1474281938.1488966463; language=en; express:sess=eyJ1c2VybmFtZSI6InNpZWJ1dGdlb2dvbDE5ODIiLCJzZXNzaW9uSWQiOiJlYTUzMjE1N2EyYmVlNTg4MGJjZTRiNWVlM2YzNDdiODQ2ZGZiYjc5NWFmZDg1NDYxN2RjMWQ3MjQwZWE0YmFhIiwic2V0dGluZ3MiOnsic291bmRzRW5hYmxlZCI6dHJ1ZSwiY2FsbGluZ0VuYWJsZWQiOmZhbHNlfX0=; express:sess.sig=j_S-TERnecHiso0ZaslmywGsktk; newUser.siebutgeogol1982=new; NREUM=s=1488966487418&r=46884&p=0; _gat=1"; string useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.9.1) Gecko/20090624 Firefox/3.5 (.NET CLR 3.5.30729)"; var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://www.textnow.com/api/users/siebutgeogol1982/phone?strict=0"); httpWebRequest.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"; httpWebRequest.Method = "PUT"; httpWebRequest.Headers.Add("Cookie", cookie); httpWebRequest.UserAgent = useragent; using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { string json = "json=%7B%22area_code%22%3A%22912%22%7D"; streamWriter.Write(json); } var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var responseText = streamReader.ReadToEnd(); return responseText; }
var tries = File.ReadAllLines(@"C:\test\test.txt", Encoding.UTF8).Length;
ZennoPoster.AddTries("Privet", tries);