package bot import ( "fmt" "time" "github.com/go-rod/rod" "github.com/go-rod/rod/lib/proto" ) type Select struct { Element *rod.Element Selector string } func (elemSelector *Select) SelectItem(changeValue string) error { _, err := elemSelector.Element.Evaluate(rod.Eval(`()=>{document.querySelector("` + elemSelector.Selector + `").value = "` + changeValue + `";}`)) _, err = elemSelector.Element.Evaluate(rod.Eval(`()=>{document.querySelector("` + elemSelector.Selector + `").dispatchEvent(new Event('change'));}`)) return err } func WaitLoad(frm *rod.Page) error { // belli bir süre redirect ten önceki js fonksiyonunun tamamlanması bekleniyor wait := frm.WaitRequestIdle(100*time.Millisecond, nil, nil, nil) wait() err := frm.WaitLoad() return err } func ReceiveDOMMessages(page *rod.Page, selector string, searchValue string) (string, error) { // Tek bir öğe alınması, hata durumunu kontrol etmek için elemd := page.MustElements(selector) // Eğer elem boş ise, yani nil ise, hata döndür if len(elemd) == 0 { err := fmt.Errorf("Sellector Bulunamadı: %v", selector) return "", err } elem := page.MustElement(selector) // Eğer elem boş ise, yani nil ise, hata döndür if elem == nil { err := fmt.Errorf("Sellector Bulunamadı: %v", selector) return "", err } // Öğenin metnini al //text := elem.MustEval(fmt.Sprintf(`() => this.%s`, searchValue)).String() // text := elem.MustEval(`() => this.innerText`).String() text := elem.MustEval(fmt.Sprintf(`() => this.%s`, searchValue)).String() return text, nil } func FillInput(frm *rod.Page, selector string, value string) error { el, err := frm.Element(selector) if err != nil { return err } err = el.Input(value) return err } func ClickItem(frm *rod.Page, selector string, clickCount int) error { // Sayfadan ilgili öğeyi bul el, err := frm.Element(selector) err = el.WaitLoad() if err != nil { return err } err = el.Click(proto.InputMouseButtonLeft, clickCount) return err } func Wait(frm *rod.Page, millisecond time.Duration) { wait := frm.WaitRequestIdle(millisecond*time.Millisecond, nil, nil, nil) wait() } func CloseBrowser(browser *rod.Browser) { browser.Close() } // func (elemSelector *Select) MultipleEvalute(changeValue []string) error { // for i := 0; i < len(changeValue); i++ { // _, err := elemSelector.Element.Evaluate(rod.Eval(changeValue[i])) // if err != nil { // return err // } // } // return nil // }