当前位置: 首页 > 知识库问答 >
问题:

Linux上的phantomjs异常错误(64bit)org.openqa.selenium.NoSuchelementException

晏沈义
2023-03-14

代码在我的本地主机(win10)中运行良好,但在Linux(64BT)上出现异常错误:

org.openqa.selenium.nosuchelementexception:{“errormessage”:“找不到id为'magix_vf_root'的元素”,“request”:{“headers”:{“accept”:“application/json,image/png”,“connection”:“keep-alive”,“content-length”:“38”,“content-type”:“application/json;charset=UTF-8”,“host”:“localhost:12709”},“httpversion”:“1.1”,“解析”:{“锚点”:“”“、”查询“:”“、”文件“:”元素“、”目录“:”/“、”路径“:”/元素“、”相对“:”/元素“、”端口“:”主机“:”“、”密码“:”“用户”:“”、“用户信息”:“”、“授权”:“”、“协议”:“”、“源”:“/元素”、“查询键”:{}、“块”:“[”元素“]}、”URLOriginal“:”/Session/350BD6E0-8784-11E6-B57C-35629091C8A9/element“}}命令持续时间或超时时间:60.32秒数

下面是我的代码:

public static void testPhantomjs() throws IOException{

    DesiredCapabilities caps = new DesiredCapabilities();
    caps.setJavascriptEnabled(true);
    caps.setCapability("takesScreenshot", true);
    caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "F:\\selenium\\phantomjs.exe");
    //caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "/opt/phantomjs");
    //System.setProperty("webdriver.chrome.driver", "F:\\selenium\\phantomjs.exe");
    WebDriver d = new PhantomJSDriver(caps);
    try{
        //d.manage().timeouts().setScriptTimeout(20L, TimeUnit.SECONDS);
        d.manage().timeouts().implicitlyWait(60L, TimeUnit.SECONDS); 
        d.get("http://www.alimama.com/member/login.htm?forward=http%3A%2F%2Fpub.alimama.com%2Fmyunion.htm");
        d.manage().window().maximize();

        d = d.switchTo().frame(d.findElement(By.name("taobaoLoginIfr")));
        //WebElement quick = new WebDriverWait(d, 10).until(ExpectedConditions.visibilityOfElementLocated(By.id("J_Quick2Static")));
        //new Actions(d).moveToElement(quick).click().perform();
        //quick.click();
        d.findElement(By.id("J_Quick2Static")).click();

        //d.findElement(By.id("TPL_username_1")).clear();
        d.findElement(By.id("TPL_username_1")).sendKeys("username");
        //d.findElement(By.id("TPL_password_1")).clear();
        d.findElement(By.id("TPL_password_1")).sendKeys("password");

        getScreenshot(d, "1");

        d.findElement(By.id("J_SubmitStatic")).click();

        //d.switchTo().defaultContent();

        getScreenshot(d , "2");

        d.findElement(By.id("magix_vf_root"));

        getScreenshot(d , "3");

        Set<Cookie> cookies = d.manage().getCookies();
        StringBuffer sb = new StringBuffer();
        for (Cookie cookie : cookies) {
            sb.append(cookie.getName() + "=" + cookie.getValue() + ";");
        }
        System.out.println("cookiestr:" + sb.toString());

    }catch(Exception e){
        e.printStackTrace();
    }finally{
        getScreenshot(d, "finally");
        d.quit();
    }
}

和结果消息:

共有1个答案

鲜于玮
2023-03-14

代码在my localhost(win10)中运行良好,但在Linux上出现异常错误(64BT):org.openqa.selenium.nosuchelementException:{“errorMessage”:“无法找到id为'magix_vf_root'的元素

这看起来像是时间问题,您应该尝试使用WebDriverWait等待,直到元素出现在DOM上,如下所示:-

WebElement quick = new WebDriverWait(d, 10).until(ExpectedConditions.presenceOfElementLocated(By.id("magix_vf_root")));
 类似资料:
  • 问题内容: 我尝试使用输入四个浮点数,将它们存储到堆栈中,然后使用将它们复制到寄存器中以供使用。我的问题是,当我尝试输出这4个数字时,程序seg错误出现在。 我认为它与堆栈有关,但是我尝试多次弹出(一次执行多个指令)无济于事。我还是汇编语言的新手,所以使用它对于我来说有点太先进了。 您会注意到我包含了一个名为的文件。它使我能够查看寄存器和堆栈(这就是为什么要有指令的原因。)这是由我的教授提供的,它

  • 目录表 错误 try..except 处理异常 引发异常 如何引发异常 try..finally 使用finally 概括 当你的程序中出现某些 异常的 状况的时候,异常就发生了。例如,当你想要读某个文件的时候,而那个文件不存在。或者在程序运行的时候,你不小心把它删除了。上述这些情况可以使用异常来处理。 假如你的程序中有一些无效的语句,会怎么样呢?Python会引发并告诉你那里有一个错误,从而处理

  • 我已经为发送电子邮件编写了自己的代码点火器模型。直到最近我开始出现这个错误,一切都很好: 致命错误:无法在/home/mysite/public\u html/subdir/application/libraries/phpmailer/class中重新声明类phpmailerException。phpmailer。php在线2319 我正在使用: 代码点火器2 PHP点火器5.1 我尝试了以下方

  • 忽略on_member_remove Traceback中的异常(最近一次调用为last):文件“C:\Users\Filbert\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\Local Packages\Python38\site Packages\discord\clie

  • 原因:异常[EclipseLink-6076](Eclipse持久性服务-2.5.0.v20130507-3faac2b):org。日食坚持不懈。例外。QueryException异常描述:对象比较只能用于OneToOneMappings。其他映射比较必须通过查询键或直接属性级比较来完成。映射:[org.eclipse.persistence.mappings.DirectToFieldMappi

  • 问题内容: 我正在尝试在 Python中* 运行 PhantomJS 驱动程序,但出现错误。我读过我应该将整个路径作为参数传递,但这没有帮助。 * 这是代码: 错误: 你知道我在做什么错吗? 问题答案: 用原始字符串创建路径,并添加“ r”: