Failed to access chrome messaging API from execute_script selenium

I need to send a value for the chrome extension from a browser automation script. The way I'm currently trying to do this is to try calling the chrome.runtime.sendMessage API from selenium to tell the value of the chrome extension. Python code:

import os
import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options



chrome_options = Options()
chrome_options.add_extension('/home/lurscher/plugin.crx')
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.get(url)
browser.execute_script("chrome.runtime.sendMessage({someValue: "+str(args.value)+"}, function(response) { console.log('value sent. '+response)})")

I get this error:

Traceback (most recent call last):
  File "tools/selenium/open_page.py", line 17, in <module>
    browser.execute_script("chrome.runtime.sendMessage({someValue: "+str(args.value)+"}, function(response) { console.log('value sent. '+response)})")
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 397, in execute_script
    {'script': script, 'args':converted_args})['value']
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 165, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 164, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: u"unknown error: Cannot call method 'sendMessage' of undefined\n  (Session info: chrome=28.0.1500.71)\n  (Driver info: chromedriver=2.1,platform=Linux 3.5.0-17-generic x86_64)" 

Question: Any idea what I'm doing wrong?

I need to send a value for the chrome extension from a browser automation script. How to do it?

+4
source share
4 answers

A similar error on startup: (JavaScript)

this.driver.executeScript(function () {
    chrome.runtime.sendMessage('start');
});
WebDriverError: unknown error: Cannot read property 'sendMessage' of undefined

, chrome.runtime , . ( Incognito , .) , - WebDriver.

, , : https://groups.google.com/forum/#!topic/chromedriver-users/7wF9EHF2jxQ

options.excludeSwitches('test-type'); // this makes chrome.runtime available
builder.setChromeOptions(options);

, :

WebDriverError: unknown error: Invalid arguments to connect.

, , Chrome, . :.

"externally_connectable": {
    "matches": [
    "http://localhost:8000/mytest.html"
    ]
}

sendMessage:

this.driver.executeScript(function () {
    chrome.runtime.sendMessage('kjnfjpehjfekjjhcgkodhnpfkoalhehl', 'start');
});

.

- , MGR , script sendMessage, , .

, , , script, sendMessage:

:

this.driver.executeScript(function () {
    var event = document.createEvent('HTMLEvents');
    event.initEvent('extension-button-click', true, true);
    document.dispatchEvent(event);
});

script :

"content_scripts": [
    { "matches": ["<all_urls>"], "js": ["content_script.js"] }
]

content_script.js:

document.addEventListener('extension-button-click', function () {
    chrome.runtime.sendMessage('start');
});

,

+1

, Cannot call method 'sendMessage' of undefined. , chrome.runtime contenxt chrome extensions, , execute_script, .

0

. script script. script , , script, - . , .

0

selenium python, Chrome. . , Chrome . - html, , id = 'message' . Script Google Chrome, . , Script , .

0

All Articles