我想创建一个使用文件夹路径并将其所有img内容使用python和chromedriver发布到instagram用户故事的机器人(我已经有很多其他功能可以使用此设置工作,所以我希望使用这些工具解决此问题)。如果有人创建或发现了与我描述的内容类似的内容,请对链接进行评论。
我尝试对chromedriver使用移动仿真模式,但取得了一些成功。我能够进入文件选择屏幕,但是当我返回到instagram时,它不再进行移动仿真并锁定了UI(它要求旋转设备)。我包括了当前为我使用的Webdriver选择的选项。我还包括了用于将文件上传到故事的def。
def __init__ (self, username, password, actionstring, inspoaccounts,
inspohashtags) :
self.username = username
self.password = password
self.actionString = str(actionstring)
self.inspoAccounts = (str(inspoaccounts).split('|', 30))
self.inspoHashtags = (str(inspohashtags).split('|', 30))
cOptions = Options()
cOptions.add_argument("--incognito")
cOptions.add_argument("--start-maximized")
cOptions.add_argument('--user-agent="Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 640 XL LTE) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10166"')
self.driver = webdriver.Chrome(executable_path="venv/Lib/chromedriver_win32/chromedriver.exe", options=cOptions)
self.driver.delete_all_cookies()
def uploadStory(self, path):
path = self.cleanPath(path)
actions = ActionChains(self.driver)
element = self.driver.find_element_by_css_selector(
'#react-root > section > main > section > div.zGtbP > div > div > div > div:nth-child(1) > button')
#THIS IS WHERE IT ASKS ME TO ROTATE MY DEVICE
actions.move_to_element(element)
actions.click()
actions.perform()
time.sleep(random.randint(3, 6))
autoit.win_activate("Open")
time.sleep(random.randint(4, 6))
autoit.control_send("Open", "Edit1", path)
time.sleep(random.randint(3, 7))
autoit.control_send("Open", "Edit1", "{ENTER}")
time.sleep(random.randint(3, 6))
self.driver.find_element_by_xpath("//*[@id=\"react-root\"]/section/footer/div/div/button").click()
如果有人有任何想法或项目,请随时发表评论。没有错误的答案
答案 0 :(得分:0)
您可以使用https://github.com/instagrambot/instapy-cli上传故事。它完成了基本工作,没有标签,主题标签等:
from instapy_cli import client
with client(user, passw) as cli:
result = cli.upload(img_path, story=True)
其他可能性可能涉及:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
driver.set_window_size(width, height)
,
chrome_options = Options()
useragent = "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Mobile Safari/537.36"
chrome_options.add_argument(f"user-agent={useragent}")
,
chrome_options.add_experimental_option("mobileEmulation", {"deviceName":"Galaxy S5"}) #or whatever
driver = webdriver.Chrome(options=chrome_options)
答案 1 :(得分:-1)
我目前正在使用chrome上的移动仿真器,但使用的是c#,我的代码在下面用于启用移动仿真,并且可以正常工作,并在整个测试套件中始终保持在移动仿真中。以下是我的参考代码,希望对您有帮助
IWebDriver driver;
ChromeOptions option = new ChromeOptions();
option.AddArguments("--use-fake-ui-for-media-stream"); //Incase you prefer to use webcam to click photoswebcam
option.EnableMobileEmulation(deviceName); // try this option to launch mobile emulator replace devicename with deside device model name. it should be same as listed in chrome.
driver = new ChromeDriver(option);
请让我知道是否需要任何澄清。我知道它不是python的,但可以作为参考。