در این آموزش، قصد داریم چگونگی شناسایی عناصر زیر را در یک فرم، بیاموزیم:
-
- Radio Button
- Check Box
Radio Button
Radio Buttonها را میتوان با استفاده از متد ()click تغییر داد.
با استفاده از این صفحه تمرینی، میببینید که ()radio1.click میتواند Radio Button فعال را به “Option1” تغییر دهد. ()radio2.click نیز میتواند با ترک Radio Button فعال قبلی، Radio Button فعال را به “Option2” تغییر دهد.
Check Box
تغییر وضعیت Check Box به حالت On یا Off فقط با استفاده از متد ()click انجام میشود.
کد موجود در کادر زیر روی چکباکس “Keep me logged in” از Facebook دو بار کلیک کرده و سپس در زمانیکه وضعیت آن On است نتیجه را به صورت True باز میگرداند. در صورتیکه وضعیت آن Off باشد نتیجه False باز گردانده میشود. این کار برای شناسایی وضعیت جاری Check Box انجام میشود.
متد ()isSelected برای شناسایی این موضوع که آیا CheckBox در وضعیت On یا Off است استفاده میشود.
در این لینک مثال دیگری در این رابطه وجود دارد.
کد کامل
در اینجا یک کد کامل عملیاتی ارائه شده است.
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.*; public class Form { public static void main(String[] args) { // declaration and instantiation of objects/variables System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("http://demo.guru99.com/test/radio.html"); WebElement radio1 = driver.findElement(By.id("vfb-7-1")); WebElement radio2 = driver.findElement(By.id("vfb-7-2")); //Radio Button1 is selected radio1.click(); System.out.println("Radio Button Option 1 Selected"); //Radio Button1 is de-selected and Radio Button2 is selected radio2.click(); System.out.println("Radio Button Option 2 Selected"); // Selecting CheckBox WebElement option1 = driver.findElement(By.id("vfb-6-0")); // This will Toggle the Check box option1.click(); // Check whether the Check box is toggled on if (option1.isSelected()) { System.out.println("Checkbox is Toggled On"); } else { System.out.println("Checkbox is Toggled Off"); } //Selecting Checkbox and using isSelected Method driver.get("http://demo.guru99.com/test/facebook.html"); WebElement chkFBPersist = driver.findElement(By.id("persist_box")); for (int i=0; i<2; i++) { chkFBPersist.click (); System.out.println("Facebook Persists Checkbox Status is - "+chkFBPersist.isSelected()); } //driver.close(); } }
عیبیابی(Troubleshooting)
اگر در هنگام یافتن عناصر با ()NoSuchElementException روبرو هستید، بدین معنیست که عنصر در این صفحه و در نقطهای از صفحه که Web Driver بدان دسترسی دارد یافت نشده است.
۱- Locator خود را دوباره با استفاده از Firepath یا Inspect Element در Chrome بررسی کنید.
۲- بررسی کنید که آیا Valueای(مقدار) که شما در کد خود استفاده میکنید، با مقداری که اکنون در Firepath است متفاوت است یا خیر.
۳- برخی از Propertyها برای چند عنصر، پویا و دینامیک هستند. در این مورد، شما میبینید که Value متفاوت بوده و به صورت دینامیک تغییر میکند. شما میتوانید از ()By.xpath یا ()By.cssSelector که راههای قابل اعتمادتر اما پیچیدهتری هستند استفاده کنید.
۴- گاهی اوقات ممکن است چنین چیزی مساله Wait باشد، به عنوان مثال، WebDriver، کد شما را قبل از بارگذاری کاملِ صفحه اجرا کرده، و یا مسائل دیگری از این دست.
۵- با استفاده از implicit waitها یا explicit waitها یک wait قبل از ()findElement خود Add نمایید.
خلاصه
برای دسترسی به هر نوع عنصر مورد بحث در بالا اعم از Check Box یا Radio Button میتوانید از ()click استفاده نمایید، که برای تغییر وضعیت عنصر مذبوز به حالت On یا Off کاربرد دارد.
این یک آموزش طولانی مدت است. بنابراین قسمتهای بعدی به محض آماده شدن علاوه بر اینکه در صفحه Home وبسایت اطلاعرسانی خواهد شد، به صورت دستهبندی شده از اینجا نیز در دسترس است.