无法 find/use Twitter 媒体按钮的正确 xpath,为什么?
Could not find/use the right xpath of the Twitter Media button, why?
我正在创建一个 Python 脚本(使用 selenium),它会自动 posts texts
和 media(images)
。
脚本在 posting texts
时成功运行,但在尝试 post 图像时失败。错误只是说
" Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="layers"]/div[2]/div/div/div/div/div/div[2]/div[2]/div"...
我使用以下代码单击 Twitter 媒体按钮,打开我的 Windows 资源管理器,准备进入我的图像文件夹(另请参见图像中突出显示的媒体按钮)。
driver.find_element(by.XPATH, image_xpath).click()
time.sleep(2)
driver.find_element(by.XPATH, image_xpath).send_keys(image)
上传一个 image
,如果你有一个 input tag
属性 type
作为 file
您可以直接使用send_keys
上传图片。
time.sleep(2)
driver.find_element(by.XPATH, image_xpath).send_keys("full file path of image")
我建议诱导 ExplicitWait
wait = WebDriverWait(driver, 30)
wait.until(EC.visibility_of_element_located((By.XPATH, "image_xpath"))).send_keys("full file path of image")
进口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
请注意,您不应单击按钮来打开 windows 弹出窗口。上传图片后,直接发送密钥。
twitter 中有一个用于上传文件的输入标签。您可以使用该定位器上传文件。
下面的代码可以发送图片:
环境:
Python3.9.5
OS: Windows
URL = "https://twitter.com/login"
driver.get(URL)
driver.maximize_window()
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.NAME, "text"))).send_keys("your username")
driver.find_element(By.XPATH, '(//*[@role="button"]//following::span[contains(.,"Next")])[2]').click()
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.NAME, "password"))).send_keys("your passowrd")
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//div[@data-testid='LoginForm_Login_Button']"))).click()
sleep(5)
imagePath = driver.find_element(By.XPATH, "//*[@data-testid='fileInput']")
imagePath.send_keys("C:\Users\username\Documents\Personal\selenium.png")
tweetButton = driver.find_element(By.XPATH, "//*[@data-testid='tweetButtonInline']")
tweetButton.click()
输出:
输入文件标签:
我正在创建一个 Python 脚本(使用 selenium),它会自动 posts texts
和 media(images)
。
脚本在 posting texts
时成功运行,但在尝试 post 图像时失败。错误只是说
" Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="layers"]/div[2]/div/div/div/div/div/div[2]/div[2]/div"...
我使用以下代码单击 Twitter 媒体按钮,打开我的 Windows 资源管理器,准备进入我的图像文件夹(另请参见图像中突出显示的媒体按钮)。
driver.find_element(by.XPATH, image_xpath).click()
time.sleep(2)
driver.find_element(by.XPATH, image_xpath).send_keys(image)
上传一个 image
,如果你有一个 input tag
属性 type
作为 file
您可以直接使用send_keys
上传图片。
time.sleep(2)
driver.find_element(by.XPATH, image_xpath).send_keys("full file path of image")
我建议诱导 ExplicitWait
wait = WebDriverWait(driver, 30)
wait.until(EC.visibility_of_element_located((By.XPATH, "image_xpath"))).send_keys("full file path of image")
进口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
请注意,您不应单击按钮来打开 windows 弹出窗口。上传图片后,直接发送密钥。
twitter 中有一个用于上传文件的输入标签。您可以使用该定位器上传文件。
下面的代码可以发送图片:
环境:
Python3.9.5
OS: Windows
URL = "https://twitter.com/login"
driver.get(URL)
driver.maximize_window()
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.NAME, "text"))).send_keys("your username")
driver.find_element(By.XPATH, '(//*[@role="button"]//following::span[contains(.,"Next")])[2]').click()
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.NAME, "password"))).send_keys("your passowrd")
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//div[@data-testid='LoginForm_Login_Button']"))).click()
sleep(5)
imagePath = driver.find_element(By.XPATH, "//*[@data-testid='fileInput']")
imagePath.send_keys("C:\Users\username\Documents\Personal\selenium.png")
tweetButton = driver.find_element(By.XPATH, "//*[@data-testid='tweetButtonInline']")
tweetButton.click()
输出:
输入文件标签: