উত্তর:
.NET ভাষার বাইন্ডিংগুলিতে থাকা অবজেক্ট, পদ্ধতি এবং সম্পত্তির নাম জাভা বাইন্ডিংগুলিতে হুবহু মিলে না। প্রকল্পের অন্যতম মূলনীতি হ'ল প্রতিটি ভাষার বাইন্ডিং সেই ভাষাতে আরামদায়ক কোডিংয়ের জন্য "স্বাভাবিক বোধ করা উচিত"। সি # তে, আপনি জাভাস্ক্রিপ্ট চালানোর জন্য যে কোডটি চান তা নিম্নরূপ
IWebDriver driver; // assume assigned elsewhere
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
string title = (string)js.ExecuteScript("return document.title");
নোট করুন .NET এর জন্য ওয়েবড্রাইভার এপিআইয়ের সম্পূর্ণ ডকুমেন্টেশন এই লিঙ্কটিতে পাওয়া যাবে ।
arguments[0].click();
আমার জন্য কাজ করছে না? আমি আমার কোডটি কার্যকর করি তখন আমার কোনও ব্যতিক্রম নেই, তবে এটি বোতামটি ক্লিক করে না।
ExecuteJavascript
শুধুমাত্র একটি পদ্ধতি নয় driver
?
WebDriver.Support.dll
অ্যাসেমব্লিতে ( , Selenium.Support
প্যাকেজে নুগেটের মাধ্যমে উপলভ্য ) এখানে একটি এক্সটেনশন পদ্ধতি রয়েছে যা আপনার জন্য castালাই হ্যান্ডেল করে এবং এটিকে দেখে মনে হয় যে ড্রাইভারটির কোনও ExecuteJavaScript
পদ্ধতি রয়েছে।
স্ক্রিপ্টস বস্তুটি পেতে আমি একটি এক্সটেনশন পদ্ধতি ব্যবহার করতে পছন্দ করি:
public static IJavaScriptExecutor Scripts(this IWebDriver driver)
{
return (IJavaScriptExecutor)driver;
}
এটি হিসাবে ব্যবহৃত:
driver.Scripts().ExecuteScript("some script");
@ মর্টেন ক্রিশ্চেনসেনের দুর্দান্ত এক্সটেনশন পদ্ধতি আইডিয়াটির সামান্য সরলীকৃত সংস্করণ সম্পর্কে কীভাবে:
public static object Execute(this IWebDriver driver, string script)
{
return ((IJavaScriptExecutor)driver).ExecuteScript(script);
}
// usage
var title = (string)driver.Execute("return document.title");
বা সম্ভবত জেনেরিক সংস্করণ:
public static T Execute<T>(this IWebDriver driver, string script)
{
return (T)((IJavaScriptExecutor)driver).ExecuteScript(script);
}
// usage
var title = driver.Execute<string>("return document.title");
নুগেট প্যাকেজে Selenium.Support
ইতিমধ্যে এটিতে সহায়তা করার জন্য একটি এক্সটেনশন পদ্ধতি রয়েছে। এটি অন্তর্ভুক্ত হয়ে গেলে, এক লাইনারে এক্সিকিউটার স্ক্রিপ্ট
Driver.ExecuteJavaScript("console.clear()");
অথবা
string result = Driver.ExecuteJavaScript<string>("console.clear()");
IJavaScriptExecutor
এবং কাঙ্ক্ষিত রিটার্ন টাইপটিতে কাস্ট করা যায় না এমন ক্ষেত্রে রিটার্নের ধরণটি বাতিল হলে ভাল ব্যতিক্রম বার্তা দেয়।
Driver
? ভিএস তা বুঝতে পারে না
আপনি এছাড়াও করতে পারেন:
public static IWebElement FindElementByJs(this IWebDriver driver, string jsCommand)
{
return (IWebElement)((IJavaScriptExecutor)driver).ExecuteScript(jsCommand);
}
public static IWebElement FindElementByJsWithWait(this IWebDriver driver, string jsCommand, int timeoutInSeconds)
{
if (timeoutInSeconds > 0)
{
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
wait.Until(d => d.FindElementByJs(jsCommand));
}
return driver.FindElementByJs(jsCommand);
}
public static IWebElement FindElementByJsWithWait(this IWebDriver driver, string jsCommand)
{
return FindElementByJsWithWait(driver, jsCommand, s_PageWaitSeconds);
}
public void javascriptclick(String element)
{
WebElement webElement=driver.findElement(By.xpath(element));
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].click();",webElement);
System.out.println("javascriptclick"+" "+ element);
}
public static class Webdriver
{
public static void ExecuteJavaScript(string scripts)
{
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript(scripts);
}
public static T ExecuteJavaScript<T>(string scripts)
{
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
return (T)js.ExecuteScript(scripts);
}
}
আপনার কোড আপনি তারপর করতে পারেন
string test = Webdriver.ExecuteJavaScript<string>(" return 'hello World'; ");
int test = Webdriver.ExecuteJavaScript<int>(" return 3; ");
সংক্ষিপ্ততম কোড
ChromeDriver drv = new ChromeDriver();
drv.Navigate().GoToUrl("/programming/6229769/execute-javascript-using-selenium-webdriver-in-c-sharp");
drv.ExecuteScript("return alert(document.title);");