Python-এ Selenium WebDriver দিয়ে JavaScript এক্সিকিউট করা যায় execute_script মেথড ব্যবহার করে। DOM এলিমেন্টের সাথে ইন্টারঅ্যাকশনের জন্য JavaScript খুব কার্যকর, বিশেষ করে স্ক্রোলিং, হিডেন এলিমেন্ট ক্লিক ইত্যাদি কাজে।
সিনট্যাক্স: পেজ বটমে স্ক্রোল করা
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
উদাহরণ: পেজের নিচে স্ক্রোল করা
from selenium import webdriver
driver = webdriver.Chrome(executable_path="C:\\chromedriver.exe")
driver.implicitly_wait(0.5)
driver.get("https://www.tutorialspoint.com/tutor_connect/index.php")
# পেজের নিচে স্ক্রোল করুন
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
JavaScript Executor দিয়ে ক্লিক করা
WebDriver-এর নেটিভ click() ফেইল করলে (এলিমেন্ট কভারড, হিডেন, ডিজেবল্ড) JavaScript click() ব্যবহার করা হয়।
সিনট্যাক্স
element = driver.find_element_by_css_selector("#id")
driver.execute_script("arguments[0].click();", element)
উদাহরণ: লিংক ক্লিক করা
from selenium import webdriver
driver = webdriver.Chrome(executable_path="C:\\chromedriver.exe")
driver.implicitly_wait(0.5)
driver.get("https://www.tutorialspoint.com/index.htm")
# এলিমেন্ট খুঁজে বের করুন (XPath দিয়ে)
element = driver.find_element_by_xpath("//*[text()='Library']")
# JavaScript দিয়ে ক্লিক করুন
driver.execute_script("arguments[0].click();", element)
print("Page title after click: " + driver.title)
আউটপুট
পেজ টাইটেল প্রিন্ট হবে ক্লিকের পর।
ব্যাখ্যা
execute_scriptমেথড ব্রাউজারের কনটেক্সটে JavaScript রান করে।arguments[0]রিপ্রেজেন্ট করে পাস করা প্রথম আর্গুমেন্ট (WebElement)।window.scrollTo(x, y)দিয়ে পেজ স্ক্রোল করা যায়।- Python-এ
find_element_by_*মেথডগুলো Selenium 4-এ ডিপ্রিকেটেড, নতুন সিনট্যাক্স:driver.find_element(By.CSS_SELECTOR, "#id")।
সাধারণ JavaScript অপারেশনস Python-এ
# এলিমেন্টে স্ক্রোল ইন্টু ভিউ
driver.execute_script("arguments[0].scrollIntoView(true);", element)
# এলিমেন্ট হাইলাইট করা (ডিবাগিংয়ের জন্য)
driver.execute_script("arguments[0].style.border='3px solid red'", element)
# ইনপুট ফিল্ডে মান সেট করা (বাইপাস ভ্যালিডেশন)
driver.execute_script("arguments[0].value = 'new value';", element)
# পেজ রিলোড
driver.execute_script("location.reload();")