Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何解决selenium中的单击元素问题_Python_Selenium - Fatal编程技术网

Python 如何解决selenium中的单击元素问题

Python 如何解决selenium中的单击元素问题,python,selenium,Python,Selenium,我正在尝试用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_displ

我正在尝试用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()
我已经确定了我使用的
xpath
元素名
是正确的,事实上broswer找到了它们, 问题在于,当代码在instagram登录页面中写入用户名和密码时,如果broswer窗口位于桌面前台,则会单击登录按钮;如果broswer窗口被其他应用程序覆盖,或者如果它位于另一个dsktop页面,则不会单击访问按钮

我也尝试过在headless模式下运行这段代码,但它很有效,所以我不知道问题出在哪里

(我在移动模式下启动broswer,代码不会出现错误)

我正在使用
python3

操作系统:
windows


Broswer:
chrome

我认为唯一可行的方法就是无头。如果应用程序正在运行,则无法继续正常使用桌面。:)

我认为实现这一目标的唯一途径是无头。如果应用程序正在运行,则无法继续正常使用桌面。:)

你试过使用

driver.window_handles
driver.switch_to_window
处理特定Instagram登录窗口

Example:
window_before = driver.window_handles[0]
window_after = driver.window_handles[1]
你试过使用

driver.window_handles
driver.switch_to_window
处理特定Instagram登录窗口

Example:
window_before = driver.window_handles[0]
window_after = driver.window_handles[1]

只是澄清一点,您希望主登录窗口出现在前台?不,我希望登录过程在其他桌面页面中也能正常工作,或者当浏览器页面被其他应用程序覆盖时。必须澄清一点,您希望主登录窗口出现在前台?不,我希望登录过程在其他桌面页面中也能正常工作,或者当浏览器页面被其他应用程序覆盖时也能正常工作,但我认为这不是必要的,我只有一个窗口,当程序必须在输入框中写入用户名和密码时,它们才被写入。我将尝试这样做,看看它是否工作没有,但我认为这是没有必要的,我只有一个窗口,当程序必须在输入框中写入用户名和密码时,它们被写入。我会试着做这件事,看看是否有效