Selenium WebDriver.get(url)不会打开URL

时间:2011-09-08 11:43:42

标签: selenium webdriver

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窗口,但不会打开网址。

  1. 我有一个代理服务器(但地址栏没有显示传递的网址)
  2. 我有两个Firefox配置文件。
  3. 1或2可以成为问题吗?如果是,那我该如何解决?

20 个答案:

答案 0 :(得分:16)

这是defect of Selenium
我在代理后面的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脚本之前删除代理设置也有帮助:

http_proxy= python script.py

答案 1 :(得分:9)

我遇到了完全相同的问题,浏览了一段时间后,才知道它基本上是版本兼容性问题 bt firefox和selenium。我有最新的Firefox,但我的Selenium导入较旧,导致问题。在升级selenuim

之后问题得到解决
pip install -U selenium
  

操作系统:Windows Python 2.7

答案 2 :(得分:1)

@Neeraj

我已经解决了这个问题,但我不确定你是否也是同样的原因。

一般来说,我的问题是由一些许可问题引起的。

我试图将整个项目移到〜/:

mv xxx/ ~/

然后我改变给它777权限:

chmod -R 777 xxx/

我不熟悉linux权限,所以我这样做是为了确保我有权执行该程序。

即使您没有权限,硒计划也不会提示您。

所以,祝你好运。

答案 3 :(得分:1)

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")));

答案 4 :(得分:1)

我已经解决了这个问题。

如果您的jar文件早于最新版本且浏览器已更新到最新版本,请下载:

答案 5 :(得分:0)

花了很多时间在这个问题上,最后发现 selenium 2.44 无法使用节点版本 0.12 。 使用节点版本 0.10.38

答案 6 :(得分:0)

根据您的浏览器更新您的驱动程序。

就我的 chrome 而言,

  1. 从这里下载适用于您的 chrome 的最新驱动程序:https://chromedriver.chromium.org/downloads 从您的浏览器查看 Chrome 版本:chrome://settings/help

  2. 在初始化您的 driver 时, 使用 driver = webdriver.Chrome(executable_path="path/to/downloaded/driver")

答案 7 :(得分:0)

我在尝试使用 Chrome 时遇到了保存问题。我终于将我的 chromedrivers.exe 放在与我的项目相同的位置。这为我修好了。

答案 8 :(得分:0)

检查您的浏览器版本,然后执行以下操作。

1。从Google下载Firefox / Chrome网络驱动程序

2。将网络驱动程序放在Chrome的目录中。

答案 9 :(得分:0)

我在使用Chrome时遇到了同样的问题。

使用以下步骤解决

  1. 从Google安装Firefox / Chrome网络驱动程序
  2. 将网络驱动程序放在Chrome的目录中。

这是代码,它工作正常

from selenium import webdriver

class InstaBot(object):
    def __init__(self):
        self.driver=webdriver.Chrome("C:\Program 
        Files(x86)\Google\Chrome\Application\chromedriver.exe")# make sure 
                                                      #it is chrome driver 
        self.driver.get("https://www.wikipedia.com")
        
        
InstaBot()

答案 10 :(得分:0)

我遇到了类似的问题,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);
    }

}

答案 11 :(得分:0)

发布没有协议(例如localhost:4200)的URL而不是同时指定协议(例如http://localhost:4200)的URL时,我遇到了相同的错误。

在没有协议的情况下Google Chrome可以正常工作(默认为http),但是Firefox崩溃并显示此错误。

答案 12 :(得分:0)

我有类似的问题。我要做的就是删除现有的geckodriver.exe并下载相同版本的最新版本。您可以在https://github.com/mozilla/geckodriver/releases处找到最新版本。

答案 13 :(得分:-1)

如果您在Windows机器中使用它,请检查您安装的selenium webdriver是否是最新的。我刚刚探讨了我的webdriver是旧的,它只是打开firefox但它无法处理get函数。

更新webdriver解决了这个问题

答案 14 :(得分:-1)

请看一下这个方法:http://www.qaautomation.net/?p=373 仔细查看“实例化WebDriver”部分

我认为您缺少以下代码行:

wait = new WebDriverWait(driver, 30);

把它放在

之间
driver = webdriver.Firefox();

driver.getUrl("http://www.google.com");

没有测试过,因为我目前没有使用Selenium。我熟悉Selenium 1.x。

答案 15 :(得分:-1)

由于您提到使用代理,请尝试使用代理设置firefox驱动程序,方法是按照此处给出的答案proxy selenium python firefox

答案 16 :(得分:-1)

这对我有用(在使用Python-2.7的Ubuntu Desktop 11.04上测试):

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("http://www.stackoverflow.com")

答案 17 :(得分:-1)

我遇到了保存问题。我假设你在启动python脚本之前确保你的java服务器正在运行?可以从selenium's download list下载java服务器。

当我使用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 org.openqa.jetty.jetty.servlet.ServletHandler@21b64e6a
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,但我听说版本存在一些安全问题,可能会阻止某些selenium的功能(我还没有验证过) 。无论如何,出于这个原因,我使用的是旧版本的Firefox。

答案 18 :(得分:-2)

尝试以下代码

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

WebDriver DRIVER = new FirefoxDriver();
DRIVER.get("http://www.google.com");

答案 19 :(得分:-6)

您需要先将url声明为sting,如下所示:

<script type="text/javascript">
    function nameChange(){
        var a = document.getElementById("shape").value;
        if(a=="Circle"){
            document.getElementById("geometry").innerHTML = "Please provide Radius of Circle: ";
            document.getElementById("geometry1").style.display = "none";
            document.getElementById("Input1").style.display = "block";
        }else if(a=="Triangle"){
            document.getElementById("geometry").innerHTML = "Please provide Dimension of Triangle: ";
            document.getElementById("geometry1").style.display = "none";
            document.getElementById("Input1").style.display = "block";
        }else if(a=="Square"){
            document.getElementById("geometry").innerHTML = "Please provide Dimension of Square: ";
            document.getElementById("geometry1").style.display = "none";
            document.getElementById("Input1").style.display = "block";
        }else{
            document.getElementById("geometry").innerHTML = "Please provide Length of Rectangle: ";
            document.getElementById("geometry1").innerHTML = "Please provide Breath of Rectangle: ";
            document.getElementById("Input1").style.display = "none";
            document.getElementById("Input2").style.display = "block";
        }
    }
</script>