#html #vba #selenium
Вопрос:
я хочу сделать «Прямую отправку сообщений в Instagram MECRO»
URL = www.instagram.com/direct/inbox
driver.FindElementByXPath("/html/body/div[1]/section/div/div[2]/div/div/div[1]/div[1]/div/div[3]/button/div/svg").Click
КОГДА я открываю ссылку и копирую и вставляю xpath, мой код работает хорошо, однако после запуска один раз запустите мой код снова,
тогда «NoSuchElementError» … почему…? что мне делать?..
(я также использую селен)
полный код :
Sub Sending_DM()
Dim driver As Selenium.ChromeDriver
Dim username As String, Login_ID As String, Login_PW As String
Set driver = New Selenium.ChromeDriver
driver.Start
driver.Wait (2000)
username = Sheet3.Range("B2").Value 'B2 = User ID = username
Login_ID = Sheet3.Range("a1").Value
Login_PW = Sheet3.Range("a2").Value
driver.Get "https://www.instagram.com/" amp; username
'-----------Login
driver.FindElementByXPath("//*[@id=""loginForm""]/div/div[1]/div/label/input").SendKeys (Login_ID) ' MY INSTAGRAM ID
driver.FindElementByXPath("//*[@id=""loginForm""]/div/div[2]/div/label/input").SendKeys (Login_PW) ' My instagram PW
driver.FindElementByXPath("//*[@id=""loginForm""]/div/div[3]").Click
driver.Wait (4000)
driver.Get "https://www.instagram.com/direct/inbox/"
'-----------Sending DM
driver.FindElementByXPath("/html/body/div[1]/section/div/div[2]/div/div/div[1]/div[1]/div/div[3]/button/div/svg").Click
driver.FindElementByXPath("/html/body/div[6]/div/div/div[2]/div[1]/div/div[2]/input").SendKeys (Sheet3.Range("c1"))
driver.FindElementByXPath("/html/body/div[6]/div/div/div[1]/div/div[2]/div/button/div").Click
driver.Wait (1000)
driver.FindElementByXPath("/html/body/div[1]/section/div/div[2]/div/div/div[2]/div[2]/div/div[2]/div/div/div[2]/textarea").SendKeys (Sheet3.Range("c2").Value) 'Sheet3.range("c2") = recipient ID
driver.FindElementByXPath("/html/body/div[1]/section/div/div[2]/div/div/div[2]/div[2]/div/div[2]/div/div/div[3]/button").Click
Sheet3.Range("d2") = "o" 'Sending Check
End ()
Комментарии:
1. Они, вероятно, делают html динамичным, чтобы специально не позволять людям делать то, что вы пытаетесь сделать.
2. @braX, значит, я не могу решить эту проблему?
3. Можете ли вы поделиться кодом, который вы пробовали, и полной трассировкой стека ошибок ? похоже, мы столкнулись с проблемой локаторов
4. @cruisepandey я делюсь кодом!
Ответ №1:
хорошо, мы столкнулись с проблемой неправильного локатора.
замените эту строку
driver.FindElementByXPath("/html/body/div[1]/section/div/div[2]/div/div/div[1]/div[1]/div/div[3]/button/div/svg").Click
с этим :
driver.FindElementByXPath("/html/body/div[1]/section/div/div[2]/div/div/div[1]/div[1]/div/div[3]/button/div/*").Click