Selenium WebDriver.get(url) не открывает URL-адрес
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
import time
# Create a new instance of the Firefox driver
driver = webdriver.Firefox()
# go to the google home page
driver.get("http://www.google.com")
Это открывает окно Firefox, но не открывает URL-адрес.
- У меня есть прокси-сервер (но адресная строка не отображает пройденный URL-адрес)
- У меня есть два профиля Firefox.
Может ли проблема 1 или 2? если да, то как я могу его решить?
Ответы
Ответ 1
Это дефект селена.
У меня такая же проблема в Ubuntu 12.04 за прокси.
Проблема заключается в неправильных исключениях прокси-сервера. Исключения по умолчанию Ubuntu находятся в переменной среды no_proxy:
no_proxy=localhost,127.0.0.0/8
Но кажется, что маска /8 не работает для селена. Чтобы обойти проблему, достаточно изменить no_proxy на следующее:
no_proxy=localhost,127.0.0.1
Удаление настроек прокси-сервера перед запуском python script также помогает:
http_proxy= python script.py
Ответ 2
Я столкнулся с одной и той же проблемой, после просмотра на некоторое время узнал, что это проблема совместимости версий bt firefox и selenium. У меня есть последний firefox, но мой импортированный Selenium был старше, что вызывает проблему. Проблема решена после обновления selenuim
pip install -U selenium
ОС: windows Python 2.7
Ответ 3
@Neeraj
Я решил эту проблему, но я не уверен, что вы по той же причине.
В общем, моя проблема была вызвана некоторыми проблемами с разрешениями.
Я попытался переместить весь проект в ~/:
mv xxx/ ~/
а затем я изменяю разрешение 777:
chmod -R 777 xxx/
Я не знаком с разрешением linux, поэтому я просто делаю это, чтобы убедиться, что у меня есть разрешение на выполнение программы.
Даже у вас нет разрешения, программа селена не предложит вам.
Итак, удачи.
Ответ 4
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
driver.get("http://www.google.com");
OR
import org.openqa.selenium.support.ui.ExpectedConditions;
WebDriverWait wait = new WebDriverWait(driver,30);
driver.get("http://www.google.com");
//hplogo is the id of Google logo on google.com
wait.until(ExpectedConditions.presenceOfElementLocated(By.id("hplogo")));
Ответ 5
Я решил эту проблему.
Если ваши файлы jar старше последней версии и браузер обновлен до последней версии, загрузите:
Ответ 6
A потратил много времени на эту проблему и, наконец, обнаружил, что selenium 2.44 не работает с node версией 0.12.
Используйте node версию 0.10.38.
Ответ 7
У меня была похожая проблема. Все, что мне нужно было сделать, это удалить существующий geckodriver.exe и загрузить последнюю версию того же самого. Вы можете найти последнюю версию здесь https://github.com/mozilla/geckodriver/releases.
Ответ 8
Я получил ту же ошибку при выдаче URL без протокола (например, localhost:4200
) вместо правильного, также указывающего протокол (например, http://localhost: 4200).
Google Chrome отлично работает без протокола (по умолчанию используется http), но Firefox вылетает с этой ошибкой.
Ответ 9
У меня возникла похожая проблема, и у меня сработало определение строки для URL. :)
package Chrome_Example;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class Launch_Chrome {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\\Users\\doyes\\Downloads\\chromedriver_win324\\chromedriver.exe");
String URL = "http://www.google.com";
WebDriver driver = new ChromeDriver();
driver.get(URL);
}
}
Ответ 10
Пожалуйста, взгляните на это HowTo: http://www.qaautomation.net/?p=373
Внимательно посмотрите раздел "Создание веб-браузера"
Я думаю, что вам не хватает следующей строки кода:
wait = new WebDriverWait(driver, 30);
Поместите его между
driver = webdriver.Firefox();
и
driver.getUrl("http://www.google.com");
Не тестировали, потому что я не использую Selenium на данный момент. Я знаком с Selenium 1.x.
Ответ 11
У меня была проблема с сохранением. Я предполагаю, что вы убедились, что ваш Java-сервер запущен до того, как вы начали свой python script? Сервер java можно загрузить из списка загрузки selenium.
Когда я сделал netstat для оценки открытых портов, я заметил, что java-сервер не работает на конкретном хосте "localhost"
:
Когда я запустил сервер, я обнаружил, что номер порта 4444:
$ java -jar selenium-server-standalone-2.35.0.jar
Sep 24, 2013 10:18:57 PM org.openqa.grid.selenium.GridLauncher main
INFO: Launching a standalone server
22:19:03.393 INFO - Java: Apple Inc. 20.51-b01-456
22:19:03.394 INFO - OS: Mac OS X 10.8.5 x86_64
22:19:03.418 INFO - v2.35.0, with Core v2.35.0. Built from revision c916b9d
22:19:03.681 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub
22:19:03.683 INFO - Version Jetty/5.1.x
22:19:03.683 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
22:19:03.685 INFO - Started HttpContext[/selenium-server,/selenium-server]
22:19:03.685 INFO - Started HttpContext[/,/]
22:19:03.755 INFO - Started [email protected]
22:19:03.755 INFO - Started HttpContext[/wd,/wd]
22:19:03.765 INFO - Started SocketListener on 0.0.0.0:4444
Мне удалось просмотреть мои прослушивающие порты и их номера портов (опция -n), выполнив следующую команду в терминале:
$netstat -an | egrep 'Proto|LISTEN'
Это привело меня к следующему выводу
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp46 0 0 *.4444 *.* LISTEN
Я понял, что это может быть проблемой, потому что selenium socket utils, найденный в: webdriver/common/utils.py, пытается подключиться через "localhost" или 127.0.0.1:
socket_.connect(("localhost", port))
как только я изменил "localhost" на "" (пустые одинарные кавычки для представления всех локальных адресов), он начал работать. Итак, предыдущая строка из utils.py выглядит так:
socket_.connect(('', port))
Я использую MacOs и Firefox 22. Последняя версия Firefox на момент публикации этой статьи - 24, но я слышал, что есть некоторые проблемы безопасности с версией, которая может блокировать некоторые функции селена (я не проверял это), Несмотря на это, я использую более старую версию Firefox.
Ответ 12
Это сработало для меня (протестировано на Ubuntu Desktop 11.04 с Python-2.7):
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.stackoverflow.com")
Ответ 13
Поскольку вы упомянули, что используете прокси-сервер, попробуйте настроить драйвер firefox с помощью прокси, следуя приведенному здесь ответом прокси-сервер selenium python firefox
Ответ 14
Если вы используете его на компьютере с Windows, проверьте, установлен ли установленный вами веб-редактор selenium. Я только что изучил, что мой webdriver имеет старый, и он просто открывает firefox, но не может обработать функцию get.
Обновление webdriver разрешает эту проблему
Ответ 15
Попробуйте использовать следующий код
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
WebDriver DRIVER = new FirefoxDriver();
DRIVER.get("http://www.google.com");
Ответ 16
Вам нужно сначала объявить url как жало, как показано ниже:
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
import time
# Create a new instance of the Firefox driver
String URL = "http://www.google.com";
driver = webdriver.Firefox()
# go to the google home page
driver.get(URL);