0

我编写了一个脚本并收到了一个过时的元素错误。我知道问题出在哪里,但我不知道如何修复脚本。

我正在编写一个脚本来通过 FireFox 执行以下操作:1),启动 google.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();

脚本和错误的快照

我很感激帮助。谢谢!

4

1 回答 1

0

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

预期的最终结果

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

实际最终结果 1

并与driver.navigate().refresh()

实际最终结果 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”之后,页面不提交(意味着它不搜索)。相反,它会刷新(导致搜索栏清空),然后从主页中选择“图像”链接。

于 2019-03-04T06:08:49.403 回答