有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

陈旧元素Selenium和Java的JSON状态映射

我写了一个脚本,收到了一个陈旧的元素错误。我知道问题是什么,但我不知道如何修复脚本

我正在编写一个脚本,通过FireFox执行以下操作:1)启动谷歌。com,2),输入“pluralsight”,3),提交,4),点击图片链接

除了选择图片链接,我可以执行每一步。当我检查错误时,似乎ide正在搜索位于谷歌主页上的图像链接,而不是点击谷歌搜索后出现的图像链接(我希望这是有意义的)。以下是脚本:

enter code here
package com.pluralsight;

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

public class WebDriverTutorial {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        //System.setProperty("webdriver.gecko.driver", "C:\\Program Files(x86)\\Drivers\\Gecko\\geckodriver.exe");

        WebDriver driver = new FirefoxDriver();
        driver.get("http://www.google.com");
        WebElement searchfield = driver.findElement(By.name("q"));

        searchfield.sendKeys("pluralsight");
        searchfield.submit();

        WebElement imagesLink= driver.findElements(By.linkText("Images")).get(0);
        driver.navigate().refresh();
        imagesLink.click();

Snapshot of script and error

谢谢你的帮助。谢谢


共 (1) 个答案

  1. # 1 楼答案

    下面的图片是我想要得到的:

    Expected End Result

    实际结果如下(无driver.navigate().refresh()):

    Actual End Result 1

    driver.navigate().refresh()

    Actual End Result 2

    下面是一个错误日志:

    1551745909286   mozrunner::runner   INFO    Running command: "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\ALILLI~1\\AppData\\Local\\Temp\\rust_mozprofile.riKtO8zAttRA"
    1551745910784   addons.webextension.screenshots@mozilla.org WARN    Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid host permission: resource://pdf.js/
    1551745910785   addons.webextension.screenshots@mozilla.org WARN    Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid host permission: about:reader*
    1551745914653   Marionette  INFO    Listening on port 53795
    Mar 04, 2019 6:31:54 PM org.openqa.selenium.remote.ProtocolHandshake createSession
    INFO: Detected dialect: W3C
    Mar 04, 2019 6:31:58 PM org.openqa.selenium.remote.ErrorCodes toStatus
    
    
    **INFO: HTTP Status: '404' -> incorrect JSON status mapping for 'stale element reference' (400 expected)**
    Exception in thread "main" org.openqa.selenium.StaleElementReferenceException: **The element reference of <a class="gb_d" href="https://www.google.com/imghp?hl=en&tab=wi"> is stale; either the element is no longer attached to the DOM, it is not in the current frame context, or the document has been refreshed
    For documentation on this error, please visit: http://seleniumhq.org/exceptions/stale_element_reference.html**
    
    
    Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
    System info: host: 'DESKTOP-FHGCOLL', ip: '192.168.1.130', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '10.0.1'
    Driver info: org.openqa.selenium.firefox.FirefoxDriver
    Capabilities [{moz:profile=C:\Users\ALiLLiNOiS\AppData\Local\Temp\rust_mozprofile.riKtO8zAttRA, rotatable=false, moz:geckodriverVersion=0.24.0, timeouts={implicit=0.0, pageLoad=300000.0, script=30000.0}, pageLoadStrategy=normal, unhandledPromptBehavior=dismiss and notify, strictFileInteractability=false, moz:headless=false, platform=ANY, moz:accessibilityChecks=false, moz:useNonSpecCompliantPointerOrigin=false, acceptInsecureCerts=false, browserVersion=65.0.2, moz:shutdownTimeout=60000.0, platformVersion=10.0, moz:processID=14248.0, browserName=firefox, javascriptEnabled=true, platformName=windows, setWindowRect=true, moz:webdriverClick=true}]
    Session ID: 5948bf51-173f-4bef-bd2d-341e39a87846
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
        at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:150)
        at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:115)
        at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:45)
        at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:164)
        at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:637)
        at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:272)
        at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:82)
        at com.pluralsight.WebDriverTutorial.main(WebDriverTutorial.java:24)
    

    在上面的图片中,当“pluralsight”出现在搜索栏中后,页面不会提交(这意味着它不会搜索)。相反,它会刷新(导致搜索栏清空),然后从主页上选择“图像”链接