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可以成为问题吗?如果是,那我该如何解决?
答案 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文件早于最新版本且浏览器已更新到最新版本,请下载:
geckodriver.exe
。答案 5 :(得分:0)
花了很多时间在这个问题上,最后发现 selenium 2.44 无法使用节点版本 0.12 。 使用节点版本 0.10.38 。
答案 6 :(得分:0)
根据您的浏览器更新您的驱动程序。
就我的 chrome 而言,
从这里下载适用于您的 chrome 的最新驱动程序:https://chromedriver.chromium.org/downloads
从您的浏览器查看 Chrome 版本:chrome://settings/help
。
在初始化您的 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时遇到了同样的问题。
使用以下步骤解决
这是代码,它工作正常
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>