Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730
1

Как одновременно с открытием вкладки браузера запустить таймер?

03.12.2016, 13:21. Показов 981. Ответов 8
Метки нет (Все метки)

Используется: C#, WebDriver

СЦЕНАРИЙ
1. Открываем браузер
2. Переходим по ссылке
Запускаем Таймер (секундомер)
3. Ожидание 5 сек
4. Закрываем вкладку
Останавливаем Таймер (секундомер)


Формат значения таймера:
**** - в виде одной цифры. Пример: 1 мин 30 сек в таймере отображается как 90 сек.
**** - таймер работает по возрастанию (т.е. 1 сек, 2 сек.. А не 2 сек, 1 сек.)
Данные Таймера отображаются в*label.

Попробовал так..

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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.Support.UI;
using System.Threading; // потоки
using System.Threading.Tasks; // потоки           
*
 private void timer1_Tick(object sender, EventArgs e)
        {
            i++ ;
            label9.Text = i.ToString();
*
        }
*
*
private void mythread1()
{
timer1.Enabled = !timer1.Enabled;            
}
*
private void mythread2()
{
i++;
label9.Text = i.ToString();        
}
*
private void mythread3()
{
timer1.Stop();
}
*
private void button6_Click(object sender, EventArgs e)
        {
           // ПОТОКи
            Thread thread1 = new Thread(mythread1);
            Thread thread2 = new Thread(mythread2);
            Thread thread3 = new Thread(mythread3);
*
            thread1.Start();
            thread2.Start();
*
            // ОТКРЫТЬ БРАУЗЕР
            OpenQA.Selenium.Chrome.ChromeOptions co = new OpenQA.Selenium.Chrome.ChromeOptions();
            co.BinaryLocation = @"c:\soft\UD\GoogleChromePortable\1_1\GoogleChromePortable_1.exe";
            co.AddArguments(@"user-data-dir=c:\soft\UD\GoogleChromePortable\1_1\Data\profile");
*
*
            Browser = new OpenQA.Selenium.Chrome.ChromeDriver(co);
            Browser.Navigate().GoToUrl("https://www.yandex.ru"); // ПЕРЕХОД. СПИСОК ВИДЕО
            System.Threading.Thread.Sleep(5000); // пауза
*
            Browser.Close();
            thread3.Start();
        }


PS
C#*только начинаю осваивать .
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2016, 13:21
Ответы с готовыми решениями:

Самопроизвольный запуск браузера с открытием вкладки с рекламируемым сайтом
После установки новой программы установился и поиск майл.ру. После этого через определенные...

Одновременно запустить таймер и цикл
Суть проблемы в такова, что не могу реализовать одновременно при нажатии button1_Click выполнения...

Как уловить событию смены вкладки браузера?
Допустим пользователь зашел на мой сайт. После этого он переключился со вкладки моего сайта на...

Как запустить таймер
Помогите с проблемой Private Sub Form_Load() Timer1Start End Sub Ругается на Private Sub...

8
26 / 26 / 4
Регистрация: 20.07.2012
Сообщений: 399
Записей в блоге: 1
03.12.2016, 17:55 2
C#
1
2
3
4
5
6
7
const int timeout = 5000;
Stopwatch stopwatch = new Stopwatch();
тут твой код какой то
 while (stopwatch.ElapsedMilliseconds < timeout)
 Application.DoEvents();
 stopwatch.Stop();
тут код закрыть
Добавлено через 2 минуты
C#
1
System.Threading.Thread.Sleep(5000); // пауза
эт висанет твою программу.
Stopwatch, будет идти время и твоя прожка будет работать постоянно обращаясь к Application.DoEvents();
пока время не кончится
1
9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730
03.12.2016, 19:27  [ТС] 3
HPB,
Прошу прощения, наверное некорректно сформулировал вопрос.
Идея вопроса была такова, что чтобы пока код открывает браузер и переходит по ссылке, параллельно тикает таймер.

Предложенное вами решение выполняет описанные выше функции или просто делает паузу?
0
26 / 26 / 4
Регистрация: 20.07.2012
Сообщений: 399
Записей в блоге: 1
03.12.2016, 19:42 4
1. Открываем браузер
2. Переходим по ссылке
3. Делаем цикл с нужным временем и по "секундомеру" сверяем
C#
1
while (stopwatch.ElapsedMilliseconds < timeout)
4.Ждем когда закончится цикл
C#
1
Application.DoEvents();
5.Останавливаем наш "секундомер"
6. Закрываем вкладку.


В этом случае таймер работает , как секундоме -"stopwatch.ElapsedMilliseconds" ( т.е идет отсчет с 0 до бесконечности)
И мы останавливаем , когда нам нужно (пункт. 3)

System.Threading.Thread.Sleep(5000); // пауза ( эт немного не то в вашем случае)

Добавлено через 7 минут
Цитата Сообщение от zakaz_77 Посмотреть сообщение
Предложенное вами решение выполняет описанные выше функции или просто делает паузу?
именно , не делает замерзание выполнению кода.
1
9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730
03.12.2016, 19:43  [ТС] 5
HPB,
Не совсем понимаю..
А как сделать, чтобы таймер в это время "тикал"?
На основании вашего предложения сделал.. не знаю правильно или нет..

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// ОТКРЫТЬ БРАУЗЕР
            const int timeout = 5000;
            Stopwatch stopwatch = new Stopwatch();
 
            OpenQA.Selenium.Chrome.ChromeOptions co = new OpenQA.Selenium.Chrome.ChromeOptions();
            co.BinaryLocation = @"c:\soft\UD\GoogleChromePortable\1_1\GoogleChromePortable_1.exe";
            co.AddArguments(@"user-data-dir=c:\soft\UD\GoogleChromePortable\1_1\Data\profile");                     
            
            Browser = new OpenQA.Selenium.Chrome.ChromeDriver(co);
            Browser.Navigate().GoToUrl("https://www.yandex.ru"); 
            // System.Threading.Thread.Sleep(5000); // пауза
 
            while (stopwatch.ElapsedMilliseconds < timeout)
            Application.DoEvents();
 
            stopwatch.Stop();
            Browser.Close();
0
26 / 26 / 4
Регистрация: 20.07.2012
Сообщений: 399
Записей в блоге: 1
03.12.2016, 19:56 6
C#
1
 stopwatch.Start();
Забыл.
После того , как тебе нужно начать отсчет.
Ну добавь в лабел не таймер , а значение stopwatch. И будет тикать
-----------------------
1
9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730
03.12.2016, 22:23  [ТС] 7
HPB,

Вроде заработало.
Скорректировал код.
В частности while должен наверное выглядеть так?
C#
1
2
3
4
5
  while (stopwatch.ElapsedMilliseconds < timeout)
            { 
            label9.Text = Convert.ToString(stopwatch.Elapsed.Seconds);
            Application.DoEvents();
            }

Правильно ли я вас понял?

скорректированный код

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
            const int timeout = 5000;
            Stopwatch stopwatch = new Stopwatch();
            stopwatch.Start();           
            
 
            OpenQA.Selenium.Chrome.ChromeOptions co = new OpenQA.Selenium.Chrome.ChromeOptions();
            co.BinaryLocation = @"c:\soft\UD\GoogleChromePortable\1_1\GoogleChromePortable_1.exe";
            co.AddArguments(@"user-data-dir=c:\soft\UD\GoogleChromePortable\1_1\Data\profile");
                        
 
            Browser = new OpenQA.Selenium.Chrome.ChromeDriver(co);
            Browser.Navigate().GoToUrl("https://www.yandex.ru");
 
            label9.Text = Convert.ToString(stopwatch.Elapsed.Seconds);
            Application.DoEvents();
 
            while (stopwatch.ElapsedMilliseconds < timeout)
            { 
            label9.Text = Convert.ToString(stopwatch.Elapsed.Seconds);
            Application.DoEvents();
            }            
 
            stopwatch.Stop();
            Browser.Close();
0
26 / 26 / 4
Регистрация: 20.07.2012
Сообщений: 399
Записей в блоге: 1
03.12.2016, 22:27 8
Если заработало значит правильно поняли
Надеюсь это я вас правильно понял и натолкнул в правильное направление.
Ибо сейчас залетит бывалый и скажет , что я все усложнил.
1
9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730
04.12.2016, 12:22  [ТС] 9
HPB,

Всё таки while используется так?
C#
1
2
3
4
5
while (stopwatch.ElapsedMilliseconds < timeout)
            { 
            label9.Text = Convert.ToString(stopwatch.Elapsed.Seconds);
            Application.DoEvents();
            }
или его можно использовать просто, без {}?
C#
1
while (stopwatch.ElapsedMilliseconds < timeout)
может есть какая-нибудь особенность?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.12.2016, 12:22

Как сделать вкладки для браузера на заголовке окна?
Всем доброго времени суток! У меня вопрос, как можно в окне сделать вкладки для браузера на...

Как вытащить HTML из активной вкладки браузера Chrome?
Всем привет! Всю ночь форум копал :wall: Надо найти баланс в самом низу страницы и никак не могу...

Как считать URL из текущей вкладки яндекс-браузера?
Всем привет. Есть такая задача: Нужно получить URL адрес сайта текущей вкладки Яндекс браузера....

Как запустить потоки одновременно
#include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;dos.h&gt; using namespace std; const int m = 2,...

Как запустить несколько while одновременно?
Как запустить несколько while одновременно?

Таймер, как его запустить?
При запуске таймера, в лейбел выводится -1 сек.. и пошло..-2, -3, хотя пуск я еще не нажал. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.