एक सी # एप्लिकेशन से फ़ायरफ़ॉक्स में यूआरएल को कैप्चर करने के सबसे सरल कार्य से शुरू करें। यह user32.dll का उपयोग करके प्रकट होता है Windows API फ़ंक्शन IE के भीतर यूआरएल को कैप्चर करने के लिए दृष्टिकोण के रूप में काम नहीं करेगा।आप फ़ायरफ़ॉक्स को सी # एप्लिकेशन से कैसे स्वचालित कर सकते हैं?
उत्तर
WebAii फ़ायर्फ़ॉक्स स्वचालित कर सकते हैं स्थापित करने सहित और यूआरएल
मैं AutoHotkey साथ URL की एक पर कब्जा करने की जरूरत है चाहिए पुन: प्राप्त करने, उदाहरण के लिए, मैं भेजना होगा Ctrl + L (पता बार और उजागर सामग्री में ध्यान केंद्रित कर दिया) और Ctrl + C (क्लिपबोर्ड पर प्रतिलिपि चयन)। फिर आप जानकारी प्राप्त करने के लिए बस क्लिपबोर्ड पढ़ते हैं।
अधिक जटिल कार्यों के लिए, मैं Greasemonkey या iMacros एक्सटेंशन का उपयोग करता हूं, शायद इसी तरह के कीबोर्ड शॉर्टकट द्वारा ट्रिगर किया जाता है।
एक माइक्रोसॉफ्ट उपकरण मैं में भाग: http://msdn.microsoft.com/en-us/library/ms771286.aspx
मैं अपने पीसी पर यूआई जासूस नहीं है: .NET 3,5 http://msdn.microsoft.com/en-us/library/aa348551.aspx
यहाँ के हिस्से के रूप
यूआई स्वचालन, एक उदाहरण है फ़ायरफ़ॉक्स से पूछताछ करने के लिए, इसलिए मुझे नहीं पता कि यह आपकी user32.dll समस्या से मदद करेगा या नहीं।
यह बहुत बीटा-आई प्रतीत होता है, लेकिन किसी ने mozrepl के लिए .net connector बनाया। दरअसल, मोज़ेप कोड कोड बस github पर ले जाया गया। लेकिन mozrepl आपको फ़ायरफ़ॉक्स के XUL वातावरण में आदेश जारी करने देता है।
WatiN फ़ायरफ़ॉक्स के लिए समर्थन है।
सेलेनियम (Google परीक्षण इंजन - http://seleniumhq.org/) की कोशिश करो आप कार्य रिकॉर्ड कर सकते हैं (वे वेबपृष्ठ यूआई संबंधित) एक सी # स्रोत :)
आप सी # के लिए सेलेनियम WebDriver उपयोग कर सकते हैं में फ़ायरफ़ॉक्स और परिवर्तित में किया रिकॉर्डिंग।
यह एक क्रॉस-प्लेटफार्म एपीआई है जो आपको जावा, सी # के लिए एपीआई का उपयोग करके विभिन्न ब्राउज़रों को नियंत्रित करने की अनुमति देता है।
सेलेनियम वेबड्राइवर परीक्षणों के साथ कोड सी # का अनुलग्नक।
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium;
using OpenQA.Selenium.Interactions;
using OpenQA.Selenium.Interactions.Internal;
using OpenQA.Selenium.Support.UI;
using OpenQA.Selenium.IE;
using NUnit.Framework;
using System.Text.RegularExpressions;
namespace sae_test
{ class Program
{ private static string baseURL;
private static StringBuilder verificationErrors;
static void Main(string[] args)
{ // test with firefox
IWebDriver driver = new OpenQA.Selenium.Firefox.FirefoxDriver();
// test with IE
//InternetExplorerOptions options = new InternetExplorerOptions();
//options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
//IWebDriver driver = new OpenQA.Selenium.IE.InternetExplorerDriver(options);
SetupTest();
driver.Navigate().GoToUrl(baseURL + "Account/Login.aspx");
IWebElement inputTextUser = driver.FindElement(By.Id("MainContent_LoginUser_UserName"));
inputTextUser.Clear();
driver.FindElement(By.Id("MainContent_LoginUser_UserName")).Clear();
driver.FindElement(By.Id("MainContent_LoginUser_UserName")).SendKeys("usuario");
driver.FindElement(By.Id("MainContent_LoginUser_Password")).Clear();
driver.FindElement(By.Id("MainContent_LoginUser_Password")).SendKeys("123");
driver.FindElement(By.Id("MainContent_LoginUser_LoginButton")).Click();
driver.Navigate().GoToUrl(baseURL + "finanzas/consulta.aspx");
// view combo element
IWebElement comboBoxSistema = driver.FindElement(By.Id("MainContent_rcbSistema_Arrow"));
//Then click when menu option is visible
comboBoxSistema.Click();
System.Threading.Thread.Sleep(500);
// container of elements systems combo
IWebElement listaDesplegableComboSistemas = driver.FindElement(By.Id("MainContent_rcbSistema_DropDown"));
listaDesplegableComboSistemas.FindElement(By.XPath("//li[text()='BOMBEO MECANICO']")).Click();
System.Threading.Thread.Sleep(500);
IWebElement comboBoxEquipo = driver.FindElement(By.Id("MainContent_rcbEquipo_Arrow"));
//Then click when menu option is visible
comboBoxEquipo.Click();
System.Threading.Thread.Sleep(500);
// container of elements equipment combo
IWebElement listaDesplegableComboEquipos = driver.FindElement(By.Id("MainContent_rcbEquipo_DropDown"));
listaDesplegableComboEquipos.FindElement(By.XPath("//li[text()='MINI-V']")).Click();
System.Threading.Thread.Sleep(500);
driver.FindElement(By.Id("MainContent_Button1")).Click();
try
{ Assert.AreEqual("BOMBEO MECANICO_22", driver.FindElement(By.XPath("//*[@id=\"MainContent_RejillaRegistroFinanciero_ctl00_ctl04_LabelSistema\"]")).Text);
}
catch (AssertionException e)
{ verificationErrors.Append(e.Message);
}
// verify coin format $1,234,567.89 usd
try
{ Assert.IsTrue(Regex.IsMatch(driver.FindElement(By.XPath("//*[@id=\"MainContent_RejillaRegistroFinanciero_ctl00_ctl04_labelInversionInicial\"]")).Text, "\\$((,)*[0-9]*[0-9]*[0-9]+)+(\\.[0-9]{2})? usd"));
}
catch (AssertionException e)
{ verificationErrors.Append(e.Message);
}
try
{ Assert.IsTrue(Regex.IsMatch(driver.FindElement(By.XPath("//*[@id=\"MainContent_RejillaRegistroFinanciero_ctl00_ctl04_labelCostoOpMantto\"]")).Text, "\\$((,)*[0-9]*[0-9]*[0-9]+)+(\\.[0-9]{2})? usd"));
}
catch (AssertionException e)
{ verificationErrors.Append(e.Message);
}
try
{ Assert.IsTrue(Regex.IsMatch(driver.FindElement(By.XPath("//*[@id=\"MainContent_RejillaRegistroFinanciero_ctl00_ctl04_labelCostoEnergia\"]")).Text, "\\$((,)*[0-9]*[0-9]*[0-9]+)+(\\.[0-9]{2})? usd"));
}
catch (AssertionException e)
{ verificationErrors.Append(e.Message);
}
try
{ Assert.IsTrue(Regex.IsMatch(driver.FindElement(By.XPath("//*[@id=\"MainContent_RejillaRegistroFinanciero_ctl00_ctl04_labelcostoUnitarioEnergia\"]")).Text, "\\$((,)*[0-9]*[0-9]*[0-9]+)+(\\.[0-9]{2})? usd"));
}
catch (AssertionException e)
{ verificationErrors.Append(e.Message);
}
// verify number format 1,234,567.89
try
{ Assert.IsTrue(Regex.IsMatch(driver.FindElement(By.XPath("//*[@id=\"MainContent_RejillaRegistroFinanciero_ctl00_ctl04_labelConsumo\"]")).Text, "((,)*[0-9]*[0-9]*[0-9]+)+(\\.[0-9]{2})?"));
}
catch (AssertionException e)
{ verificationErrors.Append(e.Message);
}
System.Console.WriteLine("errores: " + verificationErrors);
System.Threading.Thread.Sleep(20000);
driver.Quit();
}
public static void SetupTest()
{ baseURL = "http://127.0.0.1:8081/ver.rel.1.2/";
verificationErrors = new StringBuilder();
}
protected static void mouseOver(IWebDriver driver, IWebElement element)
{ Actions builder = new Actions(driver);
builder.MoveToElement(element);
builder.Perform();
}
public static void highlightElement(IWebDriver driver, IWebElement element)
{ for (int i = 0; i < 2; i++)
{ IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript("arguments[0].setAttribute('style', arguments[1]);",
element, "color: yellow; border: 2px solid yellow;");
js.ExecuteScript("arguments[0].setAttribute('style', arguments[1]);",
element, "");
}
}
}
}
- 1. सी में आप क्या नहीं कर सकते हैं जिसे आप उद्देश्य-सी में कर सकते हैं?
- 2. क्या आप जावास्क्रिप्ट से सी # फ़ंक्शन कॉल कर सकते हैं?
- 3. क्या आप web.config को संशोधित कर सकते हैं और एएसपी.NET एप्लिकेशन को पुनरारंभ नहीं कर सकते?
- 4. सी # में आप कैसे नींबू (nybble) बाइट्स कर सकते हैं?
- 5. आप अंतिम गिट एड को कैसे पूर्ववत कर सकते हैं?
- 6. क्या आप ग्रहण में चयनित ऑब्जेक्ट के संदर्भों को स्वचालित रूप से हाइलाइट कर सकते हैं?
- 7. क्या आप स्वचालित रूप से ग्रहण के डीबगर को उपप्रोसेसर से जोड़ सकते हैं?
- 8. क्या आप प्रोग्रामिंग रूप से j2ee एप्लिकेशन को पुनरारंभ कर सकते हैं?
- 9. आप स्ट्रीमिंगडेटा हैंडलर को आउटपुटस्ट्रीम कैसे पाइप कर सकते हैं?
- 10. आप UIElement के अभिभावक को कैसे प्राप्त कर सकते हैं?
- 11. क्या आप एक साइगविन एप्लिकेशन को स्थिर रूप से संकलित कर सकते हैं?
- 12. आप CruiseControl.NET के माध्यम से एक क्लिकऑन एप्लिकेशन कैसे प्रकाशित कर सकते हैं?
- 13. Log4Net स्वचालित रूप से लॉग फ़ाइलों को हटा सकते हैं?
- 14. आप एक WPF ऑब्जेक्ट को क्लोन कैसे कर सकते हैं?
- 15. आप nowjs को कैसे कॉन्फ़िगर कर सकते हैं?
- 16. आप टीडीडी को कितनी दूर लागू कर सकते हैं?
- 17. क्या सी ++ कंपाइलर स्वचालित रूप से डुप्लिकेट कोड को खत्म कर सकते हैं?
- 18. आप सूची नामों को संक्षिप्त कर सकते हैं? क्यूं कर?
- 19. क्या आप ट्रैक कर सकते हैं जब एक एंड्रॉइड एप्लिकेशन समाप्त कर दिया गया है?
- 20. स्वचालित रूप से बंद फ़ायरफ़ॉक्स
- 21. सी # में आप कितने वर्ग प्राप्त कर सकते हैं?
- 22. आप कक्षा के गुणों पर कैसे लूप कर सकते हैं?
- 23. हम एंड्रॉइड में स्वचालित चमक कैसे बंद कर सकते हैं?
- 24. आप Android में ListView को मैन्युअल रूप से पुन: व्यवस्थित कैसे कर सकते हैं?
- 25. आप कितने तरीकों से सबराउटिन को कॉल कर सकते हैं और पर्ल में अपने प्रोटोटाइप को अनदेखा कर सकते हैं?
- 26. फ़ायरबेस का उपयोग करके आप प्रभावी ढंग से त्रुटियों को कैसे संभाल सकते हैं या कैसे कर सकते हैं?
- 27. क्या आप सी/सी ++ प्रक्रिया को फ्रीज कर सकते हैं और इसे एक अलग मेजबान पर जारी रख सकते हैं?
- 28. क्या आप गतिशील रूप से अपने कोको एप्लिकेशन में CFBundleDocumentTypes असाइन कर सकते हैं?
- 29. क्या आप अनुरोध चर से टाइमज़ोन निर्धारित कर सकते हैं?
- 30. सी ++ में, क्या आप मैन्युअल रूप से स्ट्रीम की विफलता सेट कर सकते हैं? कैसे?