英文:
Go Rod If Button
问题
尝试确定页面上是否存在特定按钮,如果按钮不存在,该代码似乎会冻结而不是继续执行。有没有什么方法可以确定页面上是否存在按钮,而不会停止代码的运行?
package main
import (
"log"
"github.com/go-rod/rod"
)
func main() {
urlSlice := []string{
"https://www.amd.com/en/direct-buy/5450881700/us",
"https://www.amd.com/en/direct-buy/5458373400/us",
}
for {
for _, url := range urlSlice {
page := rod.New().MustConnect().MustPage(url)
btn := page.MustElement("#product-details-info > div.container > div > div > div.product-page-description.col-flex-lg-5.col-flex-sm-12 > button")
if btn.MustText() == " ADD TO CART" {
log.Printf(
"%s \t %s",
page.MustInfo().Title,
btn.MustText(),
)
}
}
}
}
这是要翻译的代码部分。
英文:
Trying to determine if a particular button exists on a page, if the button doesn't exist this code seems to freeze instead of continuing. Any ideas what options there might be to determine if the button exists or not on a page without the code stopping?
package main
import (
"log"
"github.com/go-rod/rod"
)
func main() {
urlSlice := []string{
"https://www.amd.com/en/direct-buy/5450881700/us",
"https://www.amd.com/en/direct-buy/5458373400/us",
}
for {
for _, url := range urlSlice {
page := rod.New().MustConnect().MustPage(url)
btn := page.MustElement("#product-details-info > div.container > div > div > div.product-page-description.col-flex-lg-5.col-flex-sm-12 > button")
if btn.MustText() == " ADD TO CART" {
log.Printf(
"%s \t %s",
page.MustInfo().Title,
btn.MustText(),
)
}
}
}
}
答案1
得分: 2
btn := page.Timeout(10 * time.Second).MustElement("#product-details-info > div.container > div > div > div.product-page-description.col-flex-lg-5.col-flex-sm-12 > button")
英文:
btn := page.Timeout(10 * time.Second).MustElement("#product-details-info > div.container > div > div > div.product-page-description.col-flex-lg-5.col-flex-sm-12 > button")
答案2
得分: 1
我知道这是一个旧帖子,但如果有人迷路到这里,这是我解决这类问题的方法:
我使用.MustElements(...)来获取所有的按钮,然后在一个循环中检查按钮的.MustText()值是否与我要查找的内容匹配。
buttons := page.MustElements("button")
for _, b := range buttons {
t, err := b.Text()
if err != nil {
// 错误处理
}
if t == " ADD TO CART" {
// 做你需要做的事情
log.Printf(
"%s \t %s",
page.MustInfo().Title,
btn.MustText(),
)
break
}
}
当然,如果有一种明确的功能可以测试给定元素是否存在,那就更好了。
英文:
I know this is an old post, but if anyone wanders here, here's how I solved this kind of problem:
I used .MustElements(...) to get all the buttons and then in a loop I checked the buttons' .MustText() value if any of them is matching to what I'm looking for.
buttons := page.MustElements("button")
for _, b := range buttons {
t, err := b.Text()
if err != nil {
// error handling
}
if t == " ADD TO CART" {
// Do what you need to do
log.Printf(
"%s \t %s",
page.MustInfo().Title,
btn.MustText(),
)
break
}
}
Of course it would be good if there would be some kind of explicit functionality that tests if a given element exists or not.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论