我正在尝试使用硒制作instagram机器人,我必须在instagram上进行访问,为此我已经写了
def login(self):
self.broswer.get("https://www.instagram.com/accounts/login/")
WebDriverWait(self.broswer, 10).until(lambda d: d.find_element_by_xpath(PATH_ACCESS_BUTTON).is_displayed())
username_input = self.broswer.find_element_by_name(NAME_USERNAME_BAR)
username_input.send_keys(self._username)
password_input = self.broswer.find_element_by_name(NAME_PASSWORD_BAR)
password_input.send_keys(self._password)
WebDriverWait(self.broswer, 5).until(lambda d: d.find_element_by_xpath(PATH_ACCESS_BUTTON).is_displayed())
WebDriverWait(self.broswer, 5).until(EC.element_to_be_clickable((By.XPATH, PATH_ACCESS_BUTTON)))
access_button = self.broswer.find_element_by_xpath(PATH_ACCESS_BUTTON)
access_button.click()
我已经确定我使用的xpath
和element names
是正确的,实际上是浏览器找到了它们,
问题是当代码在instagram登录页面中写了用户名和密码时,如果浏览窗口位于桌面前景中,则单击登录按钮,否则浏览窗口被其他应用程序覆盖或位于另一个dsktop页面上的acces按钮未被单击。
我也尝试过在无头模式下运行此代码,并且它可以正常工作,所以我不知道问题出在哪里
(我以移动模式启动浏览器,并且代码未出现错误)
我正在与python3
操作系统:windows
射击游戏:chrome
答案 0 :(得分:0)
我认为唯一可行的方法就是无头。您无法继续使用桌面,而无法正常运行该应用程序。 :)
答案 1 :(得分:0)
您尝试使用
driver.window_handles
driver.switch_to_window
处理特定的Instagram登录窗口。
Example:
window_before = driver.window_handles[0]
window_after = driver.window_handles[1]