Selenium在php上不适用于Firefox 57

时间:2018-02-13 10:02:55

标签: php selenium testing selenium-webdriver

首先,我安装了 Selenium Server Standalone 3.9.1 XAMPP 3.2.2 php-webdriver 0.9.1 和< strong> Firefox 57 ,我想从selenium文件夹的根目录运行 example.php 文件。这是代码:

require_once "phpwebdriver/WebDriver.php";

$webdriver = new WebDriver("localhost", "4444");
$webdriver->connect("firefox");
$webdriver->get("http://google.com");
$element = $webdriver->findElementBy(LocatorStrategy::name, "q");
if ($element) {
    $element->sendKeys(array("php webdriver" ) );
    $element->submit();
}

当我在Chrome页面上运行此代码时,会打开Firefox, google.com 会打开并停止,它不会执行任何操作。它应该在谷歌搜索栏中搜索'php webdriver',但事实并非如此。我在chrome页面上得到了下一个通知,我在这里运行了这段代码:

  

注意:未定义的属性:第28行的... \ WebDriver \ phpwebdriver \ WebElement.php中的stdClass :: $ ELEMENT

我试过:

  • 使用和不使用firefox版本运行代码
  • 使用其他浏览器(chrome)运行代码但是我得到另一个错误(未定义属性:stdClass :: $ sessionId
  • 安装了selenium server standalone 3.4.0

什么都行不通!任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

sendKeys()方法的 Java Docs 定义方法如下:

  • sendKeys()

    void sendKeys(java.lang.CharSequence... keysToSend)
    Use this method to simulate typing into an element, which may set its value.
    
    Parameters:
    keysToSend - character sequence to send to the element
    
    Throws:
    java.lang.IllegalArgumentException - if keysToSend is null
    

因此,快速解决方案是更改代码块,如下所示:

$element = $this->webdriver->findElement(WebDriverBy::name('q'));
if ($element) {
    $element->sendKeys(array('php webdriver') );
    $element->submit();
}