正如标题所示,我的机器人无法在tiktok网站上找到upload area。
driver.get("https://www.tiktok.com/upload/")
time.sleep(5)
upld = driver.find_element(By.XPATH, "//*[@id='root']/div/div/div/div/div[2]/div[1]/div/div/div[4]/button")
upld.send_keys(r"C:\Users\Marius\final.mp4")
我在运行代码时得到的错误是:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id='root']/div/div/div/div/div[2]/div[1]/div/div/div[4]/button"}
(Session info: chrome=103.0.5060.134)
Stacktrace:
Backtrace:
Ordinal0 [0x01155FD3+2187219]
Ordinal0 [0x010EE6D1+1763025]
Ordinal0 [0x01003E78+802424]
Ordinal0 [0x01031C10+990224]
Ordinal0 [0x01031EAB+990891]
Ordinal0 [0x0105EC92+1174674]
Ordinal0 [0x0104CBD4+1100756]
Ordinal0 [0x0105CFC2+1167298]
Ordinal0 [0x0104C9A6+1100198]
Ordinal0 [0x01026F80+946048]
Ordinal0 [0x01027E76+949878]
GetHandleVerifier [0x013F90C2+2721218]
GetHandleVerifier [0x013EAAF0+2662384]
GetHandleVerifier [0x011E137A+526458]
GetHandleVerifier [0x011E0416+522518]
Ordinal0 [0x010F4EAB+1789611]
Ordinal0 [0x010F97A8+1808296]
Ordinal0 [0x010F9895+1808533]
Ordinal0 [0x011026C1+1844929]
BaseThreadInitThunk [0x7615FA29+25]
RtlGetAppContainerNamedObjectPath [0x77847A9E+286]
RtlGetAppContainerNamedObjectPath [0x77847A6E+238]
我试过在我的其他设备上运行这个机器人,它运行起来没有任何缺陷,但当我尝试在 selenium 上运行时,由于某种原因,它似乎不起作用。 chrome 版本在所有设备上都是一样的,在 selenium 上也是一样。
我试过css-selector和class find方法,但它们仍然没有返回结果。
任何帮助都很感激。
3条答案
按热度按时间y3bcpkx11#
试试这个:
gt0wga4j2#
因为你要查找的内容在IFrame中,所以Selenium XPath搜索与Google Chrome的开发工具XPath搜索不同,不会进入IFrame。因此,你所需要做的就是切换IFrame,代码应该按预期工作。
注意:WebDriverWait将不执行任何操作来修复此问题,因为此页已完全加载。
ulmd4ohb3#
由于locator strategies在您的其他设备上工作,因此定位器可能是完美的,但理想情况下,要向元素发送 * 字符序列 *,您需要为element_to_be_clickable()诱导WebDriverWait,并且可以使用以下locator strategies之一: