2017-04-14 49 views
0

我使用硒webdriver并创建一个chrome驱动程序实例。当我尝试向下滚动并向上滚动时,出现以下错误消息。此外,我可以看到一条错误消息:“Chrome正在被自动化软件控制”。虽然我无法更改Chrome浏览器中的任何设置以允许自动化,但看到此错误令人讨厌。Python selenium webdriver Chrome - Chrome正在被一个自动化软件控制

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait as wait 
from selenium.common.exceptions import TimeoutException 

from log_util.logger import log as Log 

import time 

log = Log() 


class Wiki(object): 
    def __init__(self): 
     self.link = 'http://wikipedia.org' 
     self.path = '/Users/swadhikar_c/Downloads/chromedriver' 
     self.driver = webdriver.Chrome(executable_path=self.path) 

    def open_wiki(self): 
     driver = self.driver 
     driver.get(self.link) 
     return self.wait_for_page_load() 

    def wait_for_page_load(self, timeout=200): 
     is_element_located = EC.presence_of_element_located((By.CLASS_NAME, 'central-featured-logo')) 

     try: 
      wait(self.driver, timeout=int(timeout)).until(is_element_located) 
      print("Page loaded successfully") 
      time.sleep(5) 
     except TimeoutException: 
      print("Operation timed out") 
      raise 

     return 1 

    def scroll_down_up(self): 
     driver = self.driver 

     element = driver.find_element(By.TAG_NAME, 'html') 
     element.send_keys(Keys.END) 

     print("Scrolled down to the end!") 
     time.sleep(5) 

     element.send_keys(Keys.HOME) 

     print("Scrolled up to the top!") 
     time.sleep(5) 

    def close_driver(self): 
     self.driver.quit() 


if __name__ == '__main__': 
    wiki = Wiki() 

    try: 
     if not wiki.open_wiki(): 
      print("Operation failed") 

     wiki.scroll_down_up() 

    finally: 
     wiki.close_driver() 

错误消息:

/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 /Users/swadhikar_c/pycharm_projects/pyselenium/PySelenium/test/selenium_test.py Page loaded successfully Traceback (most recent call last): File "/Users/swadhikar_c/pycharm_projects/pyselenium/PySelenium/test/selenium_test.py", line 64, in wiki.scroll_down_up() File "/Users/swadhikar_c/pycharm_projects/pyselenium/PySelenium/test/selenium_test.py", line 43, in scroll_down_up element.send_keys(Keys.END) File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webelement.py", line 349, in send_keys 'value': keys_to_typing(value)}) File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webelement.py", line 493, in _execute return self._parent.execute(command, params) File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 249, in execute self.error_handler.check_response(response) File "/Library/Python/2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 193, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: unknown error: cannot focus element (Session info: chrome=57.0.2987.133) (Driver info: chromedriver=2.29.461585 (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b),platform=Mac OS X 10.12.4 x86_64)

Process finished with exit code 1 

Chrome Message:

+0

“Chrome正在通过自动化软件进行控制”只是提醒您,Chrome已由其他第三方软件控制,而不是错误代码。该错误应该在您的代码中([检查此问题](https://sqa.stackexchange.com/questions/2023/webdriver-api-failed-to-send-keys-because-cannot-focus-element-better-工作)) – fedterzi

+0

同意但是这从webdriver夺走浏览器的重点 –

回答

1

我已经做了一些挖掘和发现解决。只需修改init函数如下。

from selenium.webdriver.chrome.options import Options 

def __init__(self): 
    self._link = 'https://in.norton.com/' 
    _path = '/Users/swadhikar_c/Downloads/chromedriver' 
    _chrome_options = Options() 
    _chrome_options.add_argument('disable-infobars') 
    self.driver = webdriver.Chrome(executable_path=_path, chrome_options=_chrome_options) 
相关问题