Я пытаюсь вызвать скрипт PHP Selenium Webdriver из PHP, и я получаю следующую ошибку:
«Traceback (последний вызов был последним): файл« seltest.py », строка 12, в файле setUp self.driver = webdriver.Firefox ()» /usr/local/lib/python2.7/dist-packages/selenium/webdriver /firefox/webdriver.py «, строка 59, в в этом self.binary, timeout), файл «/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py», строка 47, в в этом Файл self.binary.launch_browser (self.profile) «/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py», строка 64, в файле launch_browser self._wait_until_connectable () /usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py «, строка 103, в _wait_until_connectable self._get_firefox_output ()) WebDriverException: Сообщение:« Похоже, что браузер завершился до того, как мы мог подключиться. Вывод был: «Нет»
Скрипт python прекрасно работает при запуске из командной строки.
Содержание test.php:
<?php
$test = `python seltest.py 2>&1`;
var_dump ($test);
?>
Содержание seltest.py:
#! /usr/bin/python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import unittest, time, re
class Seltext(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.base_url = "https://www.google.com/"self.verificationErrors = []
self.accept_next_alert = True
def test_seltext(self):
driver = self.driver
driver.get(self.base_url + "/?gws_rd=ssl")
driver.find_element_by_id("gbqfq").clear()
driver.find_element_by_id("gbqfq").send_keys("what is selenium webdriver")
driver.find_element_by_id("gbqfb").click()
def is_element_present(self, how, what):
try: self.driver.find_element(by=how, value=what)
except NoSuchElementException, e: return False
return True
def is_alert_present(self):
try: self.driver.switch_to_alert()
except NoAlertPresentException, e: return False
return True
def close_alert_and_get_its_text(self):
try:
alert = self.driver.switch_to_alert()
alert_text = alert.text
if self.accept_next_alert:
alert.accept()
else:
alert.dismiss()
return alert_text
finally: self.accept_next_alert = True
def tearDown(self):
self.driver.quit()
self.assertEqual([], self.verificationErrors)
if __name__ == "__main__":
unittest.main()
Я все готово подтвердил, что пользователь для веб-сервера имеет разрешение на запуск скрипта Python. Я даже пытался запустить веб-сервер в качестве своего пользователя и группы, но мне все равно не повезло.
Я запускаю это на Ubuntu 12.04 с Apache 2.2.22, PHP 5.3.10-1ubuntu3.14, Selenium 2.43.0 и Python 2.7.3.
Задача ещё не решена.
Других решений пока нет …