如何用RSelenium定位并点击Migusto网站的加载更多食谱按钮?
解决RSelenium点击Migusto网站「mehr Rezepte」按钮的问题
你代码里有两个关键问题导致无法成功触发按钮点击,我来帮你修正并解释清楚:
问题1:元素定位参数使用错误
你用了using = 'class',但value写了.icon-right——这里的.是CSS选择器的语法标记,而class定位的value只需要填写纯类名(不能带.)。如果想保留带.的写法,应该把using参数改成'css selector'。
问题2:点击方法未实际执行
clickElement后面缺少括号(),这会导致你只是引用了方法对象,而没有真正调用它执行点击操作。
修正后的代码方案
这里提供两种可靠的定位方式,你可以根据实际情况选择:
方案1:修正class定位的写法
rD <- rsDriver(browser = 'chrome', port = 427L, chromever = '87.0.4280.88') remDr <- rD$client remDr$navigate('https://migusto.migros.ch/de/rezept-uebersicht/mexiko') # 去掉class value里的.,保留纯类名 load_btn <- remDr$findElement(using = 'class', value = 'icon-right') # 加上括号,执行点击方法 load_btn$clickElement()
方案2:用XPath按按钮文本定位(更精准)
如果页面中有多个带icon-right类的元素,直接通过按钮文本定位能确保选中目标按钮:
rD <- rsDriver(browser = 'chrome', port = 427L, chromever = '87.0.4280.88') remDr <- rD$client remDr$navigate('https://migusto.migros.ch/de/rezept-uebersicht/mexiko') # 先等待按钮加载完成,避免页面异步加载导致元素找不到 remDr$waitForElement(using = 'xpath', value = "//button[contains(text(), 'mehr Rezepte')]", timeout = 10000) # 通过按钮文本定位目标元素 load_btn <- remDr$findElement(using = 'xpath', value = "//button[contains(text(), 'mehr Rezepte')]") load_btn$clickElement()
额外提示
- 建议添加
waitForElement等待元素加载,这能有效避免页面未完全加载时出现的「元素未找到」错误。 - 如果单一class定位不够精准,可以尝试组合多个属性(比如class+文本)来定位元素,提升稳定性。
内容的提问来源于stack exchange,提问作者David Kaufmann
相关产品推荐
相关产品推荐

