英文:
'7' Runtime Error-NoSuchElementError-Element not found
问题
I can help you translate the non-code part of your text. Here's the translation:
"能帮我了解我错过了什么吗?
使用Selenium驱动程序,我想通过网站boulanger.com上的搜索功能,通过sendkeys,点击搜索按钮,自动收集特定产品的价格。
在执行VBA代码时,我遇到了这个错误。
'7' 运行时错误 - NoSuchElementError - 未找到元素
搜索框的Xpath如下;
//*[@id="search__component"]//div[1]/div/form/input
/html/body/header/div/div/div[3]/section/bl-search//div[1]/div/form/input
我想做的是通过.Sendkey modelcode将型号代码放到服务器上并获取搜索结果,但卡在找到正确元素上。
(https://www.boulanger.com/)
尝试使用FineElementbyCSS,FindElementbyXPath但仍然不起作用"
Please note that I've retained the code-related parts in their original language, as requested. If you have any further translation needs or questions, feel free to ask.
英文:
Would you help me to know what I am missing?
Using Selenum driver, I wnat to automate collecting prices of specific products by sendkeys, search button click via the search fuction on the website - boulanger.com.
sub BLG()
...
url = "https://www.boulanger.com/"
driver.Start "Chrome"
driver.Get url
For i = 1 To ModelCnt
modelcode = LCase(Cells(4 + i, 3).Value)
driver.FindElementByXPath("//*[@id=""search__component""]//div[1]/div/form/input").SendKeys modelcode
driver.FindElementByXPath("//*[@id=""search__component""]//div[1]/div/form/button").Click
...
Next i
end sub
when executing the VBA codes, I have this error.
'7' Runtime Error-NoSuchElementError-Element not found
The Xpath of search box is as below;
//*[@id="search__component"]//div[1]/div/form/input
/html/body/header/div/div/div[3]/section/bl-search//div[1]/div/form/input
What I want to do is put the model code by .Sendkey modelcode to the server and get search result but sticked at finding the correct element.
Tried to use FineElementbyCSS, FindElementbyXPath but still not working
答案1
得分: 0
这段VBA代码对我来说有效。我不得不一步一步地构建它,点击搜索框是最难搞清楚的部分。
Option Explicit
Sub sbBLG()
Dim chr As ChromeDriver
Set chr = New ChromeDriver
Dim we As WebElement
Dim sURL As String
sURL = "https://www.boulanger.com/"
Dim sModelCode As String
sModelCode = "HT-A7000"
chr.Start "Chrome"
chr.Get sURL
chr.Window.Maximize
sbDelay (100000)
chr.SwitchToFrame (0)
Set we = chr.FindElementByXPath("/html/body")
we.FindElementById("btnAll-on").Click
chr.SwitchToParentFrame
Set we = chr.FindElementByXPath("/html/body")
sbDelay (100000)
we.FindElementById("search__component").Click
we.FindElementById("search__component").SendKeys sModelCode
Dim Keys As Selenium.Keys
Set Keys = New Selenium.Keys
we.FindElementById("search__component").SendKeys Keys.Enter
sbDelay (100000)
Set we = chr.FindElementByXPath("/html/body")
MsgBox we.FindElementByClass("price__amount").Attribute("outerHTML")
MsgBox we.FindElementByClass("price__amount").Text
chr.Quit
End Sub
Sub sbDelay(delay As Long): Dim i As Long: For i = 1 To delay: DoEvents: Next i: End Sub
英文:
This VBA code works for me. I had to build it up step by step, the click in the search box was the hardest to figure out.
Option Explicit
Sub sbBLG()
Dim chr As ChromeDriver
Set chr = New ChromeDriver
Dim we As WebElement
Dim sURL As String
sURL = "https://www.boulanger.com/"
Dim sModelCode As String
sModelCode = "HT-A7000"
chr.Start "Chrome"
chr.Get sURL
chr.Window.Maximize
sbDelay (100000)
chr.SwitchToFrame (0)
Set we = chr.FindElementByXPath("/html/body")
we.FindElementById("btnAll-on").Click
chr.SwitchToParentFrame
Set we = chr.FindElementByXPath("/html/body")
sbDelay (100000)
we.FindElementById("search__component").Click
we.FindElementById("search__component").SendKeys sModelCode
Dim Keys As Selenium.Keys
Set Keys = New Selenium.Keys
we.FindElementById("search__component").SendKeys Keys.Enter
sbDelay (100000)
Set we = chr.FindElementByXPath("/html/body")
MsgBox we.FindElementByClass("price__amount").Attribute("outerHTML")
MsgBox we.FindElementByClass("price__amount").Text
chr.Quit
End Sub
Sub sbDelay(delay As Long): Dim i As Long: For i = 1 To delay: DoEvents: Next i: End Sub
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论