Skip to content

Commit

Permalink
feat: add two unsafe methods, UnsafeFillField and UnsafeClickButton. …
Browse files Browse the repository at this point in the history
…Also add the tests.
  • Loading branch information
DanielFillol committed Aug 8, 2024
1 parent 539664c commit c02799a
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 0 deletions.
45 changes: 45 additions & 0 deletions goSpider.go
Original file line number Diff line number Diff line change
Expand Up @@ -643,6 +643,33 @@ func (nav *Navigator) ClickButton(selector string) error {
return nil
}

// UnsafeClickButton clicks a button specified by the selector. Unsafe because this methode does not use the wait element feature.
// Example:
//
// err := nav.ClickButton("#buttonID")
func (nav *Navigator) UnsafeClickButton(selector string) error {
nav.Logger.Printf("Clicking button with selector: %s\n", selector)

err := chromedp.Run(nav.Ctx,
chromedp.Click(selector),
)
if err != nil {
nav.Logger.Printf("Error - Failed to click button: %v\n", err)
return fmt.Errorf("error - failed to click button: %v", err)
}
nav.Logger.Printf("Button clicked successfully with selector: %s\n", selector)

time.Sleep(nav.Timeout)

// Ensure the context is not cancelled and the page is fully loaded
_, err = nav.WaitPageLoad()
if err != nil {
return err
}
chromedp.WaitReady("body")
return nil
}

// ClickElement clicks an element specified by the selector.
// Example:
//
Expand Down Expand Up @@ -740,6 +767,24 @@ func (nav *Navigator) FillField(selector string, value string) error {
return nil
}

// UnsafeFillField fills a field specified by the selector with the provided value. Unsafe because this methode does not use the wait element feature.
// Example:
//
// err := nav.FillField("#fieldID", "value")
func (nav *Navigator) UnsafeFillField(selector string, value string) error {
nav.Logger.Printf("Filling field with selector: %s\n", selector)

err := chromedp.Run(nav.Ctx,
chromedp.SendKeys(selector, value, chromedp.ByQuery),
)
if err != nil {
nav.Logger.Printf("Error - Failed to fill field with selector: %v\n", err)
return fmt.Errorf("error - failed to fill field with selector: %v", err)
}
nav.Logger.Printf("Field filled with selector: %s\n", selector)
return nil
}

// ExtractLinks extracts all links from the current page.
// Example:
//
Expand Down
38 changes: 38 additions & 0 deletions goSpider_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,28 @@ func TestClickButton(t *testing.T) {
}
}

func TestUnsafeClickButton(t *testing.T) {
server := startTestServer()

nav := setupNavigator(t)
nav.OpenURL(server.URL + "/test.html")

err := nav.UnsafeClickButton("#botaoConsultarProcessos")
if err != nil {
t.Fatalf("ClickButton error: %v", err)
}

cUrl, err := nav.GetCurrentURL()
if err != nil {
t.Fatalf("GetCurrentURL error: %v", err)
}

expectedURL := "https://esaj.tjsp.jus.br/cpopg/show.do?"
if !strings.Contains(cUrl, expectedURL) {
t.Errorf("Expected URL to contain: %s, but got: %s", expectedURL, cUrl)
}
}

func TestSelectRadioButton(t *testing.T) {
server := startTestServer()
defer server.Close()
Expand Down Expand Up @@ -299,6 +321,22 @@ func TestFillField(t *testing.T) {
}
}

func TestUnsafeFillField(t *testing.T) {
server := startTestServer()
defer server.Close()

nav := setupNavigator(t)
err := nav.OpenURL(server.URL + "/test.html")
if err != nil {
t.Fatalf("OpenURL error: %v", err)
}

err = nav.UnsafeFillField("#nrProcessoInput", "1000113-34.2018.5.02.0386")
if err != nil {
t.Fatalf("FillField error: %v", err)
}
}

func TestExtractLinks(t *testing.T) {
server := startTestServer()
defer server.Close()
Expand Down

0 comments on commit c02799a

Please sign in to comment.