application dynamics fixed and error handling done
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
package bot
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/go-rod/rod"
|
||||
"github.com/go-rod/rod/lib/proto"
|
||||
)
|
||||
|
||||
type Select struct {
|
||||
@@ -12,14 +14,73 @@ type Select struct {
|
||||
}
|
||||
|
||||
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'));`))
|
||||
_, 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(50*time.Millisecond, nil, nil, nil)
|
||||
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.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
|
||||
|
||||
// }
|
||||
|
||||
Reference in New Issue
Block a user