【问题标题】:org.openqa.selenium.InvalidArgumentException: Expected [object Undefined] undefined to be a string in Seleniumorg.openqa.selenium.InvalidArgumentException:预期 [object Undefined] 未定义为 Selenium 中的字符串
【发布时间】:2017-09-25 02:45:34
【问题描述】:

我是硒新手。

下面的代码firefox 正在启动,但我无法在文本框中输入任何内容。

package webdrivers;

import java.sql.Driver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.server.handler.SendKeys;

public class Automation 
{
    public static void main(String[] args) 
    {
       WebDriver driver = new FirefoxDriver();
       driver.get("https://www.facebook.com/");
       driver.findElement(By.name("email")).sendKeys("your_username");   
    }
}

错误是:-

Exception in thread "main" org.openqa.selenium.InvalidArgumentException: Expected [object Undefined] undefined to be a string Build info: version: 'unknown', revision: '5234b32', time: '2017-03-10 09:00:17 -0800' System info: host: 'RAHUL', ip: '192.168.1.109', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_121' Driver info: org.openqa.selenium.firefox.FirefoxDriver Capabilities [{moz:profile=C:\Users\lenovo\AppData\Local\Temp\rust_mozprofile.cduJLZVQoFth, rotatable=false, timeouts={implicit=0, pageLoad=300000, script=30000}, pageLoadStrategy=normal, platform=ANY, specificationLevel=0, moz:accessibilityChecks=false, acceptInsecureCerts=false, browserVersion=53.0, platformVersion=6.3, moz:processID=6184, browserName=firefox, platformName=windows_nt}] Session ID: 452dde13-0981-4d4d-bb9a-beb6739485d5

【问题讨论】:

  • 你可能需要 By.id("email"),我猜 driver.findElement(By.name("email")) 返回的 WebElement 是未定义的
  • 它也不适用于 id。抛出同样的错误。
  • 我认为这两种方法都应该可行,我猜 Dev 的回答(Gecko 驱动程序)会解决你的问题。
  • @bert 我同意,两者都应该工作,但我总是尝试提供 OP 代码中所需的最小调整以使他/她的代码工作:)

标签: java selenium firefox selenium-webdriver geckodriver


【解决方案1】:

要使用 Selenium 3.4.0,您需要从 here 下载 gecko 驱动程序 v0.16.0 或更高版本并保存。将您的 Mozilla Firefox 升级到 53.x

接下来,您需要在代码中提供 gecko 驱动程序的绝对路径。您的代码将如下所示:

    System.setProperty("webdriver.gecko.driver",  "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
    FirefoxDriver driver =  new FirefoxDriver();
    driver.manage().window().maximize();
    driver.get("https://www.facebook.com/");
    driver.findElement(By.name("email")).sendKeys("your_username");

如果这对你有帮助,请告诉我。

【讨论】:

  • 1493291531075 addons.manager 错误启动失败:[异常...“组件返回失败代码:0x80070057(NS_ERROR_ILLEGAL_VALUE)[nsIFile.create]”nsresult:“0x80070057(NS_ERROR_ILLEGAL_VALUE)”位置:“JS 框架:: resource://gre/modules/FileUtils.jsm :: FileUtils_getDir :: line 70" data: no] StackJ traavcaeS:c rFiiplte Uetrirlosr_:g erteDsioru(r)c@er:e/s/ogurrec/em:o /d/greu/modluelse/sA/dFdiolneMUatnialgse.rj.sjms:m7,0 lNgSe_tEFRiRlOeR()N@OrTe_sIoNuIrTcIeA:L/I/ZgErDe:/mAddoondMualneasg/eFriliesU tniolts i.njistmi:a4l2i z
  • 那是因为您的 Mozilla Firefox 配置文件中有多个插件。您有 2 个选项,更简单的一个是删除附加组件并重新测试。否则,您必须创建一个新的 Firefox 配置文件。
【解决方案2】:

试试这个方法..从link下载 gecko_driver

注意:-如果您使用最新的gecko driver version(v0.16.0),请确保您的firefox 浏览器已更新到最新版本(V53)。

同时更新 selenium jar 文件。你可以从这个link下载selenium最新的jar文件

System.setProperty("webdriver.gecko.driver", "C:\\Drivers\\geckodriver.exe");   // Your gecko_driver path.
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.get("https://www.facebook.com");
driver.findElement(By.name("email")).sendKeys("Username");

【讨论】:

  • 1493291531075 addons.manager 错误启动失败:[异常...“组件返回失败代码:0x80070057(NS_ERROR_ILLEGAL_VALUE)[nsIFile.create]”nsresult:“0x80070057(NS_ERROR_ILLEGAL_VALUE)”位置:“JS 框架:: resource://gre/modules/FileUtils.jsm :: FileUtils_getDir :: line 70" data: no] StackJ traavcaeS:c rFiiplte Uetrirlosr_:g erteDsioru(r)c@er:e/s/ogurrec/em:o /d/greu/modluelse/sA/dFdiolneMUatnialgse.rj.sjms:m7,0 lNgSe_tEFRiRlOeR()N@OrTe_sIoNuIrTcIeA:L/I/ZgErDe:/mAddoondMualneasg/eFriliesU tniolts i.njistmi:a4l2i z
  • 您是否正确替换了gecko_driver 路径?
  • 打包网络驱动程序;公共类自动化 { public static void main(String[] args) { System.setProperty("webdriver.gecko.driver", "C:\\Program Files\\gecko driver\\geckodriver-v0.16.1-win64\\geckodriver 。EXE文件”); WebDriver driver = new FirefoxDriver(); driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); driver.get("facebook.com/"); driver.findElement(By.id("email")).sendKeys("your_username"); } } 是的,我做了但没有工作..!!
  • driver.findElement(By.xpath("//input[@type='email']")).sendKeys("Username");
  • 从您的脚本中更新上述代码行,然后检查。你的火狐浏览器版本?您是否安装了最新的 selenium jar 文件(3.4.0)?
【解决方案3】:

这是 geckodriver 的一个持续问题: https://github.com/mozilla/geckodriver/issues/659

如果您仍想使用 firefox:您可以将 firefox 降级到 v52,然后与 geckodriver v0.15 一起使用。

【讨论】:

    猜你喜欢
    • 2017-09-20
    • 1970-01-01
    • 2017-09-14
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多