Подтвердить что ты не робот

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? если да, то как я могу его решить?

4b9b3361

Ответ 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);