如何修复硒中的点击元素问题

时间:2019-04-08 16:50:58

标签: python selenium

我正在尝试使用硒制作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()

我已经确定我使用的xpathelement names是正确的,实际上是浏览器找到了它们, 问题是当代码在instagram登录页面中写了用户名和密码时,如果浏览窗口位于桌面前景中,则单击登录按钮,否则浏览窗口被其他应用程序覆盖或位于另一个dsktop页面上的acces按钮未被单击。

我也尝试过在无头模式下运行此代码,并且它可以正常工作,所以我不知道问题出在哪里

(我以移动模式启动浏览器,并且代码未出现错误)

我正在与python3

操作系统:windows

射击游戏:chrome

2 个答案:

答案 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]