Labview+Google Chrome
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Labview+Google Chrome
Всем добрый день! Давно завел эту тему и наконец-то нашел способ щелкать по кнопкам на сайтах. Можно конечно и парсить ответы http, но есть более простой способ на мой взгляд.
1) Качаем с сайта https://www.seleniumhq.org/download/: webdriver.dll для c#.
2) chromedriver.exe с того же сайта.
3) и с помощью net работаем с webdriver.dll
Есть вопросик по этому поводу: как организовать структуру вида:
WebDriverWait vw = new WebDriverWait (Browser, TimeSpan.FromSecond(10));
IWebElement txt = vw.Until (ExpectedCondition.ElementIsVisible(By.CssSelector("result p")));
на labview?
1) Качаем с сайта https://www.seleniumhq.org/download/: webdriver.dll для c#.
2) chromedriver.exe с того же сайта.
3) и с помощью net работаем с webdriver.dll
Есть вопросик по этому поводу: как организовать структуру вида:
WebDriverWait vw = new WebDriverWait (Browser, TimeSpan.FromSecond(10));
IWebElement txt = vw.Until (ExpectedCondition.ElementIsVisible(By.CssSelector("result p")));
на labview?
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Labview+Google Chrome
Пока что нет возможности поставить и детально попробовать. Это на любых сайтах/кнопках работает?..rushonda писал(а):Можно конечно и парсить ответы http, но есть более простой способ на мой взгляд.
Очевидно, сначала нужно создать объект WebDriverWait с помощью .NET Constructor Node. Затем вызвать метод Until только что созданного объекта и в итоге должна вернуться ссылка на объект IWebElement. Это теория, я пока не смогу проверить. Можете подождать пару дней или сами.rushonda писал(а):Есть вопросик по этому поводу: как организовать структуру вида:
WebDriverWait vw = new WebDriverWait (Browser, TimeSpan.FromSecond(10));
IWebElement txt = vw.Until (ExpectedCondition.ElementIsVisible(By.CssSelector("result p")));
на labview?
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Labview+Google Chrome
dadreamer, да абсолютно любой, и все очень просто и достаточно удобно - можно работать в режиме нескольких браузеров и в режиме Phantom.
Я сам то пробовал - все основные функции работают, но эта никак не получается. В labview функции почему-то по-другому немного выглядят, нежели в c# ?
хотя dll одна и та же...
Да, подожду. если нужно могу скинуть dll-ки.
Я сам то пробовал - все основные функции работают, но эта никак не получается. В labview функции почему-то по-другому немного выглядят, нежели в c# ?
хотя dll одна и та же...
Да, подожду. если нужно могу скинуть dll-ки.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Labview+Google Chrome
Я хромом не пользуюсь, потому пришлось разбираться, как прикрутить Selenium к Firefox (у меня ESR 52.8.1, потому geckodriver.exe не канает). В общем, пример из официальной документации у меня заработал в таком виде:rushonda писал(а):1) Качаем с сайта https://www.seleniumhq.org/download/: webdriver.dll для c#.
2) chromedriver.exe с того же сайта.
3) и с помощью net работаем с webdriver.dll
Есть вопросик по этому поводу: как организовать структуру вида:
WebDriverWait vw = new WebDriverWait (Browser, TimeSpan.FromSecond(10));
IWebElement txt = vw.Until (ExpectedCondition.ElementIsVisible(By.CssSelector("result p")));
на labview?
Код: Выделить всё
// Create a new instance of the Firefox driver
// Notice that the remainder of the code relies on the interface,
// not the implementation.
WebDriver driver = new FirefoxDriver();
// And now use this to visit Google
driver.get("http://www.google.com");
// Alternatively the same thing can be done like this
// driver.navigate().to("http://www.google.com");
// Find the text input element by its name
WebElement element = driver.findElement(By.name("q"));
// Enter something to search for
element.sendKeys("Cheese!");
// Now submit the form. WebDriver will find the form for us from the element
element.submit();
// Check the title of the page
System.out.println("Page title is: " + driver.getTitle());
// Google's search is rendered dynamically with JavaScript.
// Wait for the page to load, timeout after 10 seconds
(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return d.getTitle().toLowerCase().startsWith("cheese!");
}
});
// Should see: "cheese! - Google Search"
System.out.println("Page title is: " + driver.getTitle());
//Close the browser
driver.quit();
Код: Выделить всё
(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return d.getTitle().toLowerCase().startsWith("cheese!");
}
});
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Labview+Google Chrome
dadreamer, спасибо за комментарии.
При этом эта библиотека в c# вся доступна...
--------------
Это не чат, это форум.
Нет смысла писать сообщения с интервалом 3 минуты.
С уважением, IvanLis
Да, именно так и делал - в цикле происходит проверка наличия/отсутствия элемента.В вашем случае, видимо, нужно проверять содержимое страницы, чтобы определить, является ли элемент видимым.
Странно, что библиотека не вся импортируется, с чем это интересно связано?Можно, конечно, написать более дружелюбную библиотеку-обёртку на C#
При этом эта библиотека в c# вся доступна...
--------------
Это не чат, это форум.
Нет смысла писать сообщения с интервалом 3 минуты.
С уважением, IvanLis
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Labview+Google Chrome
Я сейчас могу ошибаться (я далеко не эксперт в C#, так, любитель). По докам, ExpectedConditions - это статический запечатанный (sealed) класс, содержащий набор интерфейсов ExpectedCondition. Такой класс не имеет конструктора и в его свойства/методы доступны с помощью обращения к константе (суть - статический экземпляр класса). Подозреваю, дело в том, что экземпляр должен быть создан с помощью преобразования типа:rushonda писал(а):Странно, что библиотека не вся импортируется, с чем это интересно связано?
При этом эта библиотека в c# вся доступна...
Код: Выделить всё
new ExpectedCondition<Boolean>()
Until - функция (метод) объекта WebDriverWait, и по идее она должна быть видна со стороны . Почему этого не происходит - Надеюсь, меня поправит кто-нибудь более опытный в C#.
upd:
А ларчик просто открывался. ExpectedConditions вынесен в отдельную DLL - WebDriver.Support.dll. Нужно поместить эту DLL рядом с WebDriver.dll (не мешать разные версии! версия обеих библиотек должна быть одинакова) , далее в создаём .NET константу, ПКМ -> Select .NET Class -> Browse -> Выбираем библиотеку (Browse) -> OpenQA.Selenium.Support.UI -> ExpectedConditions. Ну и дальше можно через Invoke Nodes что-нибудь закодить.
Насчёт Until пока не знаю. Глянул Идой, функция в библиотеке имеется. Как вызвать - хз.
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Labview+Google Chrome
dadreamer, ну теперь все ясно, NET константу создавать, это так просто не догадаешься)
Спасибо.
Спасибо.
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Labview+Google Chrome
Добрый вечер! Вопрос с кодировкой.
Кракозябры в ответе при post запросе. Content-Type:charset=utf-8 - указываю.
Чего не хватает?
Кракозябры в ответе при post запросе. Content-Type:charset=utf-8 - указываю.
Чего не хватает?
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Labview+Google Chrome
- Вложения
-
- Text to UTF-8
- Text to UTF-8.png (6.88 КБ) 5306 просмотров
-
- UTF-8 to Text
- UTF-8 to Text.png (6.89 КБ) 5306 просмотров
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Labview+Google Chrome
Что-то странное, потому что я сейчас скачал свой пример из этой темы на второй странице, запустил и русские символы отображаются нормально.
Я использовал UTF-8 to Text на строке body.-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Labview+Google Chrome
Да, я тоже запускаю этот же пример, но русские символы не отображаются как у Вас. Может настройки винды или лабвью где-то поменять нужно?
Сейчас стоит Labview 2018, windows 10. По памяти на другом компе с windows 8 и Labview 2014 нормально все отображалось.
Сейчас стоит Labview 2018, windows 10. По памяти на другом компе с windows 8 и Labview 2014 нормально все отображалось.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Labview+Google Chrome
rushonda, а локаль какая стоит в системе? https://www.isunshare.com/windows-10/ch ... ws-10.html В последних версиях Винды появилась ещё вот такая "птичка": https://superuser.com/questions/1033088 ... n-to-utf-8 Или можете попробовать инструменты, работающие через WinAPI: https://forums.ni.com/t5/LabVIEW/undocu ... 80#M536845 Правда, может не завестить на 64-битном .
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Labview+Google Chrome
Спасибо за быстрые ответы. В первых двух ссылках у меня настроено точно так же - локаль была русская - изменил на английскую, перезагрузил- не помогло.rushonda, а локаль какая стоит в системе? https://www.isunshare.com/windows-10/ch ... ws-10.html В последних версиях Винды появилась ещё вот такая "птичка": https://superuser.com/questions/1033088 ... n-to-utf-8 Или можете попробовать инструменты, работающие через WinAPI: https://forums.ni.com/t5/LabVIEW/undocu ... 80#M536845 Правда, может не завестить на 64-битном .
А вот пример в последней ссылке при выборе параметра Cyrillic - стал отображаться русский текст.
(сам бы долго еще искал, спасибо)
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Labview+Google Chrome
>> локаль была русская - изменил на английскую, перезагрузил- не помогло.
У меня на всех системах стоит русская. С описанным случаем не сталкивался. Однако сейчас взглянул внимательнее, оказывается, у инструмента UTF-8 to Text есть ещё один вход encoding (по умолчанию -1 - кодировка ОС). Если ставлю 1251, то русские символы также нормально отображаются. Если желание есть, можете проверить. Здесь список возможных значений кодировок (Info.CodePage): https://docs.microsoft.com/ru-ru/dotnet ... mework-4.8
ЗЫ: Да, на WinAPI злобно крашат мой 64-битный LV, на x32 работают нормально. Надо менять представления указателей во всех CLFN.
У меня на всех системах стоит русская. С описанным случаем не сталкивался. Однако сейчас взглянул внимательнее, оказывается, у инструмента UTF-8 to Text есть ещё один вход encoding (по умолчанию -1 - кодировка ОС). Если ставлю 1251, то русские символы также нормально отображаются. Если желание есть, можете проверить. Здесь список возможных значений кодировок (Info.CodePage): https://docs.microsoft.com/ru-ru/dotnet ... mework-4.8
ЗЫ: Да, на WinAPI злобно крашат мой 64-битный LV, на x32 работают нормально. Надо менять представления указателей во всех CLFN.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 3 Ответы
- 2071 Просмотры
-
Последнее сообщение PozhiloyGoblin
-
- 0 Ответы
- 344 Просмотры
-
Последнее сообщение maxim_MA
-
- 23 Ответы
- 2429 Просмотры
-
Последнее сообщение dadreamer
-
- 2 Ответы
- 391 Просмотры
-
Последнее сообщение ujin1
-
- 5 Ответы
- 847 Просмотры
-
Последнее сообщение dadreamer