merhaba arkadaşlar kendi projelerimde kullandıgımda basitleştirilmiş örnek basit bir kütüphane paylaşmak istedim xpath ararken zorlanmamak için sizler için basitleştirlmiş versiyununu paylaşiyorum.
seleniumBasic.py :
class SeleniumBasic:
# Bu fonksiyon, belirli bir metni içeren <button> (buton) HTML elementini bulmak için kullanılır.
# Örneğin, sayfadaki bir buton üzerinde "Giriş Yap" yazıyorsa, bu butonu bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.button_text("Giriş Yap"))
@staticmethod
def button_text(text):
return f"//button[text()='{text}']"
# Bu fonksiyon, belirli bir class ismini içeren <button> elementini bulmak için kullanılır.
# Örneğin, "btn-primary" class'ına sahip bir butonu bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.button_class("btn-primary"))
@staticmethod
def button_class(class_name):
return f"//button[contains(@class, '{class_name}')]"
# Bu fonksiyon, belirli bir metni içeren <span> HTML elementini bulmak için kullanılır.
# Örneğin, bir <span> etiketi içinde "Hoşgeldiniz" yazısı varsa, bu elementi bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.span_text("Hoşgeldiniz"))
@staticmethod
def span_text(text):
return f"//span[text()='{text}']"
# Bu fonksiyon, belirli bir class ismine sahip <span> HTML elementini bulmak için kullanılır.
# Örneğin, "highlight" class'ına sahip bir <span> etiketini bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.span_class("highlight"))
@staticmethod
def span_class(class_name):
return f"//span[contains(@class, '{class_name}')]"
# Bu fonksiyon, belirli bir metni içeren <div> HTML elementini bulmak için kullanılır.
# Örneğin, "Bu bir duyurudur" yazısını içeren bir <div> bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.div_text("Bu bir duyurudur"))
@staticmethod
def div_text(text):
return f"//div[text()='{text}']"
# Bu fonksiyon, belirli bir class ismini içeren <div> HTML elementini bulmak için kullanılır.
# Örneğin, "container" class'ına sahip bir <div> elementini bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.div_class("container"))
@staticmethod
def div_class(class_name):
return f"//div[contains(@class, '{class_name}')]"
# Bu fonksiyon, belirli bir placeholder (yer tutucu) özelliğine sahip bir <input> elementini bulmak için kullanılır.
# Örneğin, "Kullanıcı Adı" placeholder değerine sahip bir input kutusunu bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.input_placeholder("Kullanıcı Adı"))
@staticmethod
def input_placeholder(placeholder):
return f"//input[@placeholder='{placeholder}']"
# Bu fonksiyon, belirli bir name (isim) özelliğine sahip bir <input> elementini bulmak için kullanılır.
# Örneğin, "username" isminde bir input alanını bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.input_name("username"))
@staticmethod
def input_name(name):
return f"//input[@name='{name}']"
# Bu fonksiyon, belirli bir type (tip) özelliğine sahip bir <input> elementini bulmak için kullanılır.
# Örneğin, bir şifre alanını bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.input_type("password"))
@staticmethod
def input_type(type_):
return f"//input[@type='{type_}']"
# Bu fonksiyon, belirli bir id özelliğine sahip bir <input> elementini bulmak için kullanılır.
# Örneğin, "email_input" id'sine sahip bir input kutusunu bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.input_id("email_input"))
@staticmethod
def input_id(input_id):
return f"//input[@id='{input_id}']"
# Bu fonksiyon, belirli bir metni içeren bir <a> (bağlantı) elementini bulmak için kullanılır.
# Örneğin, "Anasayfa" yazısına sahip bir linki bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.link_text("Anasayfa"))
@staticmethod
def link_text(text):
return f"//a[text()='{text}']"
# Bu fonksiyon, belirli bir href (bağlantı adresi) özelliğine sahip bir <a> (bağlantı) elementini bulmak için kullanılır.
# Örneğin, "/iletisim" adresine yönlendiren bir bağlantıyı bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.link_href("/iletisim"))
@staticmethod
def link_href(href):
return f"//a[@href='{href}']"
# Bu fonksiyon, belirli bir metni içeren bir <p> (paragraf) elementini bulmak için kullanılır.
# Örneğin, "Bu bir örnek metindir." içeren bir paragrafı bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.paragraph_text("Bu bir örnek metindir."))
@staticmethod
def paragraph_text(text):
return f"//p[text()='{text}']"
# Bu fonksiyon, belirli bir başlık seviyesine (h1, h2, h3 vb.) ve metne sahip bir başlık (heading) elementini bulmak için kullanılır.
# Örneğin, h2 seviyesinde "Ürünlerimiz" yazısına sahip bir başlığı bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.heading_text(2, "Ürünlerimiz"))
@staticmethod
def heading_text(level, text):
return f"//h{level}[text()='{text}']"
# Bu fonksiyon, belirli bir alt metnine (alt attribute) sahip bir <img> (resim) elementini bulmak için kullanılır.
# Örneğin, "Logo" alt metnine sahip bir resmi bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.img_alt("Logo"))
@staticmethod
def img_alt(alt_text):
return f"//img[@alt='{alt_text}']"
# Bu fonksiyon, belirli bir kaynak (src) adresine sahip bir <img> (resim) elementini bulmak için kullanılır.
# Örneğin, "/resimler/logo.png" adresindeki bir resmi bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.img_src("/resimler/logo.png"))
@staticmethod
def img_src(src):
return f"//img[@src='{src}']"
# Bu fonksiyon, belirli bir değere sahip <option> elementini bulmak için kullanılır.
# Örneğin, "tr" değerine sahip bir <option> elementini bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.select_option("tr"))
@staticmethod
def select_option(value):
return f"//select/option[@value='{value}']"
# Bu fonksiyon, belirli bir name (isim) özelliğine sahip <select> elementini bulmak için kullanılır.
# Örneğin, "ülke" ismindeki bir dropdown menüsünü bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.select_name("ülke"))
@staticmethod
def select_name(name):
return f"//select[@name='{name}']"
# Bu fonksiyon, belirli bir name (isim) özelliğine sahip checkbox (onay kutusu) elementini bulmak için kullanılır.
# Örneğin, "sozlesme" isminde bir onay kutusunu bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.checkbox_name("sozlesme"))
@staticmethod
def checkbox_name(name):
return f"//input[@type='checkbox' and @name='{name}']"
# Bu fonksiyon, belirli bir name (isim) özelliğine sahip radio button (seçim kutusu) elementini bulmak için kullanılır.
# Örneğin, "cinsiyet" isminde bir radio button'ı bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.radio_name("cinsiyet"))
@staticmethod
def radio_name(name):
return f"//input[@type='radio' and @name='{name}']"
# Bu fonksiyon, belirtilen HTML etiketi, özellik adı ve değerine sahip bir elementi bulmak için kullanılır.
# Örneğin, "id" özelliği "menu" olan bir <div> elementini bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.attribute_value("div", "id", "menu"))
@staticmethod
def attribute_value(tag, attribute, value):
return f"//{tag}[@{attribute}='{value}']"
# Bu fonksiyon, belirli bir class ismini içeren herhangi bir HTML elementini bulmak için kullanılır.
# Örneğin, "navbar" class'ına sahip herhangi bir elementi bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.class_name("navbar"))
@staticmethod
def class_name(class_name):
return f"//*[contains(@class, '{class_name}')]"
# Bu fonksiyon, belirli bir data-attribute (veri özelliği) ve değerine sahip bir elementi bulmak için kullanılır.
# Örneğin, "data-id" özelliği "123" olan bir elementi bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.data_attribute("id", "123"))
@staticmethod
def data_attribute(data_attribute, value):
return f"//*[@data-{data_attribute}='{value}']"
# Bu fonksiyon, belirli bir title (başlık) özelliğine sahip bir elementi bulmak için kullanılır.
# Örneğin, title özelliği "Kullanıcı Profil" olan bir elementi bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.title_attribute("Kullanıcı Profil"))
@staticmethod
def title_attribute(title):
return f"//*[@title='{title}']"
# Bu fonksiyon, belirli bir aria-label özelliğine sahip bir elementi bulmak için kullanılır.
# Örneğin, "Giriş Yap" aria-label'ına sahip bir butonu bulmak için:
# driver.find_element(By.XPATH, SeleniumBasic.aria_label("Giriş Yap"))
@staticmethod
def aria_label(label):
return f"//*[@aria-label='{label}']"
# Bu fonksiyon, kullanıcı tarafından özel olarak belirtilen bir XPath ifadesini kullanmak için kullanılır.
# Örneğin, özel bir XPath ifadesini doğrudan çalıştırmak için:
# driver.find_element(By.XPATH, SeleniumBasic.custom_xpath("//div[@id='menu']"))
@staticmethod
def custom_xpath(xpath):
return xpath
# Bu fonksiyon, verilen XPath ile bir iframe içerisine geçiş yapmak için kullanılır.
# Örneğin, //iframe[@id='frame1'] XPath'ine sahip bir iframe'e geçiş yapmak için:
# SeleniumBasic.switch_to_iframe_by_xpath(driver, "//iframe[@id='frame1']")
@staticmethod
def switch_to_iframe_by_xpath(driver, iframe_xpath):
iframe = driver.find_element(By.XPATH, iframe_xpath)
return driver.switch_to.frame(iframe)
# Bu fonksiyon, iframe'den çıkıp ana sayfaya geri dönmek için kullanılır.
@staticmethod
def switch_to_default_content(driver):
return driver.switch_to.default_content()Örnek kullanimi
import seleniumBasic
button_xpath = SeleniumBasic.button_text("KABUL ET")
button_class_xpath = SeleniumBasic.button_class("btn-primary")
span_xpath = SeleniumBasic.span_text("Örnek Metin")
span_class_xpath = SeleniumBasic.span_class("highlight")
div_xpath = SeleniumBasic.div_text("Başlık")
div_class_xpath = SeleniumBasic.div_class("container")
input_placeholder_xpath = SeleniumBasic.input_placeholder("Arama")
input_name_xpath = SeleniumBasic.input_name("username")
input_type_xpath = SeleniumBasic.input_type("email")
input_id_xpath = SeleniumBasic.input_id("password")
link_xpath = SeleniumBasic.link_text("Buraya Tıklayın")
link_href_xpath = SeleniumBasic.link_href("https://www.example.com")
paragraph_xpath = SeleniumBasic.paragraph_text("Bu bir paragraf.")
heading_xpath = SeleniumBasic.heading_text(2, "Başlık 2")
img_alt_xpath = SeleniumBasic.img_alt("Resim Açıklaması")
img_src_xpath = SeleniumBasic.img_src("resim.jpg")
select_option_xpath = SeleniumBasic.select_option("option1")
select_name_xpath = SeleniumBasic.select_name("select1")
checkbox_name_xpath = SeleniumBasic.checkbox_name("subscribe")
radio_name_xpath = SeleniumBasic.radio_name("gender")
attribute_xpath = SeleniumBasic.attribute_value("div", "class", "container")
class_name_xpath = SeleniumBasic.class_name("btn");
data_attr_xpath = SeleniumBasic.data_attribute("custom", "value");
title_attr_xpath = SeleniumBasic.title_attribute("Başlık");
aria_label_xpath = SeleniumBasic.aria_label("Yardımcı metin");
iframe_gecis_xpath = SeleniumBasic.switch_to_iframe_by_xpath(driver,"iframenin xpath kodunu gir")
iframeden_cik = SeleniumBasic.switch_to_default_content(driver)
# XPath'leri yazdırma
print("Button Xpath:", button_xpath)
print("Button Class Xpath:", button_class_xpath)
print("Span Xpath:", span_xpath)
print("Span Class Xpath:", span_class_xpath)
print("Div Xpath:", div_xpath)
print("Div Class Xpath:", div_class_xpath)
print("Input Placeholder Xpath:", input_placeholder_xpath)
print("Input Name Xpath:", input_name_xpath)
print("Input Type Xpath:", input_type_xpath)
print("Input ID Xpath:", input_id_xpath)
print("Link Xpath:", link_xpath)
print("Link Href Xpath:", link_href_xpath)
print("Paragraph Xpath:", paragraph_xpath)
print("Heading Xpath:", heading_xpath)
print("Image Alt Xpath:", img_alt_xpath)
print("Image Src Xpath:", img_src_xpath)
print("Select Option Xpath:", select_option_xpath)
print("Select Name Xpath:", select_name_xpath)
print("Checkbox Name Xpath:", checkbox_name_xpath)
print("Radio Name Xpath:", radio_name_xpath)
print("Attribute Value Xpath:", attribute_xpath)
print("Class Name Xpath:", class_name_xpath)
print("Data Attribute Xpath:", data_attr_xpath)
print("Title Attribute Xpath:", title_attr_xpath)
print("Aria Label Xpath:", aria_label_xpath)