application dynamics fixed and error handling done
This commit is contained in:
@@ -2,12 +2,14 @@ package bot
|
||||
|
||||
import (
|
||||
"bordrobot/lib/company"
|
||||
"bordrobot/lib/helper"
|
||||
"bordrobot/lib/model"
|
||||
"bordrobot/lib/ocr"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -16,57 +18,96 @@ import (
|
||||
"github.com/go-rod/rod/lib/proto"
|
||||
)
|
||||
|
||||
var pageErrors []string
|
||||
|
||||
type Luca struct {
|
||||
Page *rod.Page
|
||||
Browser *rod.Browser
|
||||
}
|
||||
|
||||
func websiteMessage(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
|
||||
type errorInfo struct {
|
||||
Error string
|
||||
Index int
|
||||
}
|
||||
func clickItem(frm *rod.Page, selector string, clickCount int) error {
|
||||
// Sayfadan ilgili öğeyi bul
|
||||
dd, err := frm.Element(selector)
|
||||
err = dd.Click(proto.InputMouseButtonLeft, clickCount)
|
||||
|
||||
func VerifyCaptcha(page *rod.Page) error {
|
||||
captcha := "#captcha"
|
||||
picturePreparation := []string{
|
||||
`document.getElementsByTagName("body")[0].style.backgroundImage = "none"`,
|
||||
`document.getElementsByClassName("baslik1")[0].style.display = "none"`,
|
||||
`document.getElementsByClassName("baslik2")[0].style.display = "none"`,
|
||||
`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[1].style.display = "none"`,
|
||||
`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[2].style.display = "none"`,
|
||||
`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[3].style.display = "none"`,
|
||||
`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[4].style.display = "none"`,
|
||||
`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[5].style.display = "none"`,
|
||||
}
|
||||
for i := 0; i < len(picturePreparation); i++ {
|
||||
wait := page.WaitRequestIdle(600*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
_, err := page.Evaluate(rod.Eval(`()=>{` + picturePreparation[i] + `}`))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Print(err)
|
||||
}
|
||||
datas, err := page.Screenshot(true, &proto.PageCaptureScreenshot{})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
err = helper.CreateFolder("./processFolder")
|
||||
err = ioutil.WriteFile("./processFolder/screenshot.png", datas, 0644)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
captchaMessage, err := ReceiveDOMMessages(page, captcha, "src")
|
||||
picturePreparation = []string{
|
||||
`document.getElementsByTagName("body")[0].style.backgroundImage = ""`,
|
||||
`document.getElementsByClassName("baslik1")[0].style.display = ""`,
|
||||
`document.getElementsByClassName("baslik2")[0].style.display = ""`,
|
||||
`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[1].style.display = ""`,
|
||||
`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[2].style.display = ""`,
|
||||
`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[3].style.display = ""`,
|
||||
`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[4].style.display = ""`,
|
||||
`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[5].style.display = ""`,
|
||||
}
|
||||
for i := 0; i < len(picturePreparation); i++ {
|
||||
wait := page.WaitRequestIdle(600*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
_, err := page.Evaluate(rod.Eval(`()=>{` + picturePreparation[i] + `}`))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Print(err)
|
||||
}
|
||||
var captchaMsg []string
|
||||
|
||||
captchaMsg, err = ocr.VisionApi("./processFolder/screenshot.png")
|
||||
fmt.Print(captchaMessage)
|
||||
|
||||
trimmedMsg := strings.ReplaceAll(captchaMsg[0], " ", "")
|
||||
page.MustElement("#captcha-input").MustInput(strings.ToLower(trimmedMsg))
|
||||
_, err = page.Evaluate(rod.Eval(`document.getElementById(document.forms[0].submit())`))
|
||||
if err != nil {
|
||||
}
|
||||
err = WaitLoad(page)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
getUrl := page.MustInfo().URL
|
||||
splitUrl := strings.Split(getUrl, "/")
|
||||
uri := strings.Split(splitUrl[len(splitUrl)-1], ";")[0]
|
||||
if uri != "main.erp" {
|
||||
_, err = page.Evaluate(rod.Eval(`document.querySelector("body > div.swal2-container.swal2-fade.swal2-in > div > button.swal2-confirm.swal2-styled").click()`))
|
||||
//rod.Eval(`document.querySelector("body > div.swal2-container.swal2-fade.swal2-in > div > button.swal2-confirm.swal2-styled").click()`)
|
||||
|
||||
VerifyCaptcha(page)
|
||||
fmt.Println("captcha tekrar deneme fonksiyonuna sok")
|
||||
//captcha tekrar denenecek
|
||||
}
|
||||
return nil
|
||||
|
||||
}
|
||||
|
||||
// func (elemSelector *rod.Element)SelectItem(frm *rod.Page, selector string, changeValue string) error {
|
||||
// elemSelector.Eval(`document.getElementById("` + selector + `").value = "` + changeValue + `";`)
|
||||
// elemSelector.Eval(`document.getElementById("` + selector + `").dispatchEvent(new Event('change'));`)
|
||||
// // _, err := frm.Evaluate(rod.Eval(`
|
||||
// // document.getElementById("` + selector + `").value = "` + changeValue + `";
|
||||
// // `))
|
||||
// // _, err = frm.Evaluate(rod.Eval(`
|
||||
// // document.getElementById("` + selector + `").dispatchEvent(new Event('change'));
|
||||
// // `))
|
||||
// return err
|
||||
|
||||
// }
|
||||
func NewLucaBot() *Luca {
|
||||
l := launcher.New().
|
||||
Headless(false).
|
||||
@@ -88,243 +129,177 @@ func NewLucaBot() *Luca {
|
||||
|
||||
func (l *Luca) Login(company company.Company) error {
|
||||
page := l.Page
|
||||
page.MustElement("#musteriNo").MustInput(company.MemberNumber)
|
||||
page.Timeout(500)
|
||||
page.MustElement("#kullaniciAdi").MustInput(company.Username)
|
||||
page.Timeout(500)
|
||||
page.MustElement("#parola").MustInput(company.Password)
|
||||
page.Timeout(500)
|
||||
page.MustWaitNavigation()
|
||||
|
||||
result, err := page.Evaluate(rod.Eval(`document.getElementById(girisbtn())`))
|
||||
err := WaitLoad(page)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = FillInput(page, "#musteriNo", company.MemberNumber)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
page.Timeout(500)
|
||||
loginDialog := "body > div.swal2-container.swal2-fade.swal2-in > div > div.swal2-content" // Örneğinizdeki CSS seçicisini buraya yazın
|
||||
loginDialogMessage, err := websiteMessage(page, loginDialog, "innerText")
|
||||
err = FillInput(page, "#kullaniciAdi", company.Username)
|
||||
if err != nil {
|
||||
fmt.Errorf("hata verdi handle")
|
||||
return err
|
||||
}
|
||||
page.Timeout(500)
|
||||
err = FillInput(page, "#parola", company.Password)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
page.Timeout(500)
|
||||
|
||||
result, err := page.Evaluate(rod.Eval(`()=>{girisbtn()}`))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
page.Timeout(500)
|
||||
loginDialog := "body > div.swal2-container.swal2-fade.swal2-in > div > div.swal2-content"
|
||||
|
||||
loginDialogMessage, err := ReceiveDOMMessages(page, loginDialog, "innerText")
|
||||
if err != nil {
|
||||
errString := err.Error()
|
||||
if !strings.Contains(errString, "Sellector Bulunamadı") {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if loginDialogMessage == "Müşteri No, Kullanıcı Adı veya Parola hatalıdır." {
|
||||
fmt.Println("Şifre hatalı")
|
||||
return errors.New("Şifre hatalı")
|
||||
|
||||
}
|
||||
var captchaMsg []string
|
||||
getUrl := page.MustInfo().URL
|
||||
splitUrl := strings.Split(getUrl, "/")
|
||||
splitUrlPage := strings.Split(splitUrl[len(splitUrl)-1], ";")[0]
|
||||
if splitUrlPage != "main.erp" {
|
||||
captcha := "#captcha" // Örneğinizdeki CSS seçicisini buraya yazın
|
||||
wait := page.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
_, err := page.Evaluate(rod.Eval(`document.getElementsByTagName("body")[0].style.backgroundImage = "none"`))
|
||||
wait = page.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
_, err = page.Evaluate(rod.Eval(`document.getElementsByClassName("baslik1")[0].style.display = "none"`))
|
||||
wait = page.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
_, err = page.Evaluate(rod.Eval(`document.getElementsByClassName("baslik2")[0].style.display = "none"`))
|
||||
wait = page.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
_, err = page.Evaluate(rod.Eval(`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[1].style.display = "none"`))
|
||||
wait = page.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
_, err = page.Evaluate(rod.Eval(`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[2].style.display = "none"`))
|
||||
wait = page.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
_, err = page.Evaluate(rod.Eval(`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[3].style.display = "none"`))
|
||||
wait = page.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
_, err = page.Evaluate(rod.Eval(`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[4].style.display = "none"`))
|
||||
wait = page.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
_, err = page.Evaluate(rod.Eval(`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[5].style.display = "none"`))
|
||||
wait = page.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
|
||||
datas, err := page.Screenshot(true, &proto.PageCaptureScreenshot{})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
err = ioutil.WriteFile("C:/Users/huseyin/Desktop/project/notitek/BordroRobot/app/lib/ocr/screenshot.png", datas, 0644)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
captchaMessage, err := websiteMessage(page, captcha, "src")
|
||||
_, err = page.Evaluate(rod.Eval(`document.getElementsByTagName("body")[0].style.backgroundImage = ""`))
|
||||
wait = page.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
_, err = page.Evaluate(rod.Eval(`document.getElementsByClassName("baslik1")[0].style.display = ""`))
|
||||
wait = page.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
_, err = page.Evaluate(rod.Eval(`document.getElementsByClassName("baslik2")[0].style.display = ""`))
|
||||
wait = page.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
_, err = page.Evaluate(rod.Eval(`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[1].style.display = ""`))
|
||||
wait = page.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
_, err = page.Evaluate(rod.Eval(`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[2].style.display = ""`))
|
||||
wait = page.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
_, err = page.Evaluate(rod.Eval(`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[3].style.display = ""`))
|
||||
wait = page.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
_, err = page.Evaluate(rod.Eval(`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[4].style.display = ""`))
|
||||
wait = page.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
_, err = page.Evaluate(rod.Eval(`document.getElementsByClassName("baslik3")[0].getElementsByClassName("inp")[5].style.display = ""`))
|
||||
captchaMsg, err = ocr.VisionApi("C:/Users/huseyin/Desktop/project/notitek/BordroRobot/app/lib/ocr/screenshot.png")
|
||||
if captchaMessage != "" {
|
||||
splitUrlPage = "captcha"
|
||||
}
|
||||
if err != nil {
|
||||
fmt.Errorf("captcha Getirilirken hata oluştu")
|
||||
}
|
||||
//fmt.Println(captchaMessage) //sil
|
||||
}
|
||||
fmt.Println(result) //sil
|
||||
|
||||
//page.MustElement("#captcha-input").MustInput(captchaMessage)
|
||||
|
||||
switch splitUrlPage {
|
||||
case "giris.erp":
|
||||
rod.Eval(`document.querySelector("body > div.swal2-container.swal2-fade.swal2-in > div > button.swal2-confirm.swal2-styled").click()`)
|
||||
//kullanıcı adı ve şifre yanlış hatası verecek error basılacak
|
||||
case "captcha":
|
||||
captchaString := captchaMsg[0]
|
||||
page.MustElement("#captcha-input").MustInput(strings.Trim(captchaString, " "))
|
||||
captchaButton, err := page.Evaluate(rod.Eval(`document.getElementById(document.forms[0].submit())`))
|
||||
if err != nil {
|
||||
}
|
||||
fmt.Println("Sonuç:", captchaButton)
|
||||
getUrl = page.MustInfo().URL
|
||||
splitUrl = strings.Split(getUrl, "/")
|
||||
uri := strings.Split(splitUrl[len(splitUrl)-1], ";")[0]
|
||||
if uri != "main" {
|
||||
fmt.Println("captcha tekrar deneme fonksiyonuna sok")
|
||||
//captcha tekrar denenecek
|
||||
}
|
||||
VerifyCaptcha(page)
|
||||
}
|
||||
fmt.Println(result)
|
||||
wait := page.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
|
||||
_, err = page.Evaluate(rod.Eval(`gonder('formTarget');`))
|
||||
_, err = page.Evaluate(rod.Eval(`()=>{gonder('formTarget');}`))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
wait = page.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
return err
|
||||
|
||||
}
|
||||
func (l *Luca) NavigateBordroGiris() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (l *Luca) BordroYaz(data []*model.Bordro) error {
|
||||
func (l *Luca) BordroYaz(data []*model.Bordro, month float64, year float64) error {
|
||||
page := l.Page
|
||||
allPages, err := page.Browser().Pages()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
return err
|
||||
}
|
||||
|
||||
newPage, err := allPages.FindByURL("https://auygs.luca.com.tr/Luca/luca.do")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
return err
|
||||
}
|
||||
|
||||
//fs4, err := newPage.Element("#frm4")
|
||||
//if err != nil {
|
||||
// log.Fatal(err)
|
||||
//}
|
||||
fs2, err := newPage.Element("#frm2")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
return err
|
||||
}
|
||||
frame, err := fs2.Frame()
|
||||
fs3, err := newPage.Element("#frm3")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
return err
|
||||
}
|
||||
frame3, err := fs3.Frame()
|
||||
err = newPage.WaitLoad()
|
||||
//_, err = fs2.Evaluate(rod.Eval(`document.getElementById('apy1000m0i1ITD').dispatchEvent(new MouseEvent('mouseover', { 'bubbles': true }));`))
|
||||
err = clickItem(frame, "#apy1000m0i1ITD", 1)
|
||||
fmt.Println(err)
|
||||
err = clickItem(frame3, "#apy1000m33i4ITX", 1)
|
||||
fmt.Println(err)
|
||||
err = newPage.WaitLoad()
|
||||
wait := newPage.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
isyeriSelectBox, err := websiteMessage(frame3, "#isyeriId", "innerHTML")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
return err
|
||||
}
|
||||
wait = newPage.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
|
||||
wait = newPage.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
wait()
|
||||
err = ClickItem(frame, "#apy1000m0i1ITD", 1)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Println(err)
|
||||
err = ClickItem(frame3, "#apy1000m33i4ITX", 1)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = newPage.WaitLoad()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
Wait(newPage, 1500)
|
||||
|
||||
for i := 0; i < len(data); i++ {
|
||||
options := strings.Split(isyeriSelectBox, "</option>")
|
||||
vls := ""
|
||||
bolum := ""
|
||||
|
||||
for _, option := range options {
|
||||
// "value" ve metin içeriğini almak için regex kullanma
|
||||
re := regexp.MustCompile(`value="(.+)"[^>]*>([^<]+)`)
|
||||
matches := re.FindStringSubmatch(option)
|
||||
if len(matches) >= 3 {
|
||||
value := matches[1]
|
||||
text := matches[2]
|
||||
|
||||
// "BESMART" değerini içeren option öğelerini bulma
|
||||
if text == data[0].Sube.Value {
|
||||
vls = value
|
||||
break
|
||||
}
|
||||
if i != 0 {
|
||||
err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(3)", 1)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
err = WaitLoad(frame3)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
isyeriId := ""
|
||||
bolumId := ""
|
||||
bordroCompanySelectBox, err := frame3.Elements("#isyeriId > option")
|
||||
for j := 0; j < len(bordroCompanySelectBox); j++ {
|
||||
text, err := bordroCompanySelectBox[j].Text()
|
||||
value, err := bordroCompanySelectBox[j].Property("value")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if strings.Trim(text, " ") == data[i].Sube.Value {
|
||||
isyeriId = value.String()
|
||||
break
|
||||
}
|
||||
fmt.Print(text, value)
|
||||
}
|
||||
|
||||
isyeriId := vls
|
||||
element, err := frame3.Element("#isyeriId")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
selectInput := Select{Element: element, Selector: "#isyeriId"}
|
||||
selectInput.SelectItem(isyeriId)
|
||||
|
||||
err = selectInput.SelectItem(isyeriId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = WaitLoad(frame3)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
bolumSelectBox, err := websiteMessage(frame3, "#bolumId", "innerHTML")
|
||||
fmt.Println(bolumSelectBox)
|
||||
bolums := strings.Split(bolumSelectBox, "</option>")
|
||||
for _, option := range bolums {
|
||||
// "value" ve metin içeriğini almak için regex kullanma
|
||||
re := regexp.MustCompile(`value="(.+)"[^>]*>([^<]+)`)
|
||||
matches := re.FindStringSubmatch(option)
|
||||
if len(matches) >= 3 {
|
||||
value := strings.Trim(matches[1], " ")
|
||||
text := strings.Trim(matches[2], " ")
|
||||
|
||||
// "BESMART" değerini içeren option öğelerini bulma
|
||||
if text == "FİNANS" {
|
||||
bolum = value
|
||||
break
|
||||
}
|
||||
bordroDepartmentSelectBox, err := frame3.Elements("#bolumId > option")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for j := 0; j < len(bordroDepartmentSelectBox); j++ {
|
||||
text, err := bordroDepartmentSelectBox[j].Text()
|
||||
value, err := bordroDepartmentSelectBox[j].Property("value")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if strings.Trim(text, " ") == data[i].Bolum.Value {
|
||||
bolumId = value.String()
|
||||
break
|
||||
}
|
||||
fmt.Print(text, value)
|
||||
}
|
||||
|
||||
bolumId := bolum
|
||||
element, err = frame3.Element("#bolumId")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
selectInput = Select{Element: element, Selector: "#bolumId"}
|
||||
selectInput.SelectItem(bolumId)
|
||||
|
||||
err = selectInput.SelectItem(bolumId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = WaitLoad(frame3)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// wait = newPage.WaitRequestIdle(500*time.Millisecond, nil, nil, nil)
|
||||
// wait()
|
||||
aktarimDonem := "1"
|
||||
err = clickItem(frame3, "#tr"+aktarimDonem+" > td:nth-child(1)", 2)
|
||||
aktarimDonem := strconv.FormatFloat(month, 'f', -1, 64)
|
||||
err = ClickItem(frame3, "#tr"+aktarimDonem+" > td:nth-child(1)", 2)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
@@ -335,25 +310,58 @@ func (l *Luca) BordroYaz(data []*model.Bordro) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// wait = newPage.WaitRequestIdle(1000*time.Millisecond, nil, nil, nil)
|
||||
// wait()
|
||||
var isEmpty bool = false
|
||||
//var targetID string
|
||||
elems, err := frame3.Elements("#scroll > table > tbody > tr > td[id^='tcKimlikNo']")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
elemsProcess, err := frame3.Elements("#scroll > table > tbody > tr > td > a")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
trs, err := frame3.Elements("#scroll > table > tbody > tr")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
var foundIndex int = -1
|
||||
for i := 0; i < len(elems); i++ {
|
||||
tex, err := elems[i].Text()
|
||||
if len(elems) == 0 {
|
||||
isEmptyError := errorInfo{
|
||||
Error: "Böyle Bir Kullanıcı Bulunamadı",
|
||||
Index: i,
|
||||
}
|
||||
pageErrors = append(pageErrors, isEmptyError.Error+", Index: "+strconv.Itoa(isEmptyError.Index))
|
||||
continue
|
||||
}
|
||||
for j := 0; j < len(elems); j++ {
|
||||
tex, err := elems[j].Text()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
process, err := elemsProcess[j].Text()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if tex == data[i].TCKimlikNo.Value {
|
||||
//targetID = tex
|
||||
foundIndex = i
|
||||
foundIndex = j
|
||||
if process == "Bordro Sil" {
|
||||
isEmpty = true
|
||||
}
|
||||
break
|
||||
}
|
||||
fmt.Print(elems, tex)
|
||||
}
|
||||
if isEmpty == true {
|
||||
isEmptyError := errorInfo{
|
||||
Error: "Yazılı Bordro Var Lütfen Siliniz",
|
||||
Index: i,
|
||||
}
|
||||
pageErrors = append(pageErrors, isEmptyError.Error+", Index: "+strconv.Itoa(isEmptyError.Index))
|
||||
|
||||
continue
|
||||
}
|
||||
if foundIndex != -1 {
|
||||
|
||||
trs[foundIndex].Click(proto.InputMouseButtonLeft, 2)
|
||||
}
|
||||
err = WaitLoad(frame3)
|
||||
@@ -363,11 +371,10 @@ func (l *Luca) BordroYaz(data []*model.Bordro) error {
|
||||
}
|
||||
data[i].FillBordroForm(frame3)
|
||||
//err yoksa hesapla ba
|
||||
calculate, err := frame3.Element("body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td.right > button")
|
||||
err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td.right > button", 1)
|
||||
if err != nil {
|
||||
return err
|
||||
log.Fatal(err)
|
||||
}
|
||||
calculate.Click(proto.InputMouseButtonLeft, 1)
|
||||
err = WaitLoad(frame3)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -383,6 +390,7 @@ func (l *Luca) BordroYaz(data []*model.Bordro) error {
|
||||
|
||||
}
|
||||
}
|
||||
CloseBrowser(l.Browser)
|
||||
return err
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user