91 lines
2.4 KiB
Go
91 lines
2.4 KiB
Go
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
|
||
|
||
// }
|