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

Selenium IDE脚本在Selenium Webdriver中不工作

公冶翰池
2023-03-14

我创建了一些Selenium IDE脚本,然后将脚本导出Java /Junit4WebDrier支持的,只是简单的WebDrier类。当我运行这些类时,测试用例所做的唯一事情就是打开正确的URL。之后,测试用例是登录测试用例,它根本找不到用户名字段。我尝试通过名称或ID两者都没有工作。我甚至尝试添加一些方法来等待页面加载(实际上加载没有问题);我希望通过名称或id部分工作,至少最后尝试块使用我在网上找到的方法继续寻找userName字段,但我是surfe将不需要,如果我解决了前两个尝试块。我尝试了一些在线资源,这些资源在stackoverflow或其他论坛上,但它有点令人困惑,一个简单的脚本从IDE不会这么容易工作。

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

package com.mycomp.selenium.uatseleniumsuite.test;

/**
*
* @author sar
*/


import com.mycomp.selenium.uatseleniumsuite.login.PaymentsTabWithCssTest;
import static junit.framework.Assert.assertEquals;
import java.util.concurrent.TimeUnit;

import java.io.File;
import java.io.IOException;
import static junit.framework.Assert.assertTrue;

import org.apache.commons.io.FileUtils;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.StaleElementReferenceException;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.FluentWait;
import org.openqa.selenium.support.ui.Wait;
import org.openqa.selenium.support.ui.WebDriverWait;

public class TestloginSampleTest {

private String baseUrl;
private static WebDriver driver;
private ScreenshotHelper screenshotHelper;
static Logger logger = Logger.getLogger(TestloginSampleTest.class.getName());


@Before
public void openBrowser() {
baseUrl = "https://255.255.255.255:11115/myCompWebApp/login.go?siteLanguage=en&checked=true";
System.out.print("BASE URL IS  : "+baseUrl);
driver = new ChromeDriver();
driver.get(baseUrl);
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
screenshotHelper = new ScreenshotHelper();
}

@After
public void saveScreenshotAndCloseBrowser() throws IOException {
screenshotHelper.saveScreenshot("screenshot.png");
driver.quit();
}

@Test
public void UATLogin() throws IOException {
System.out.print("title : "+driver.getTitle());
assertEquals("The page title should equal mycomp at the start of the test.", "myCompOnline - Corporate", driver.getTitle());
try{
WebElement fuzoolPageCloseField = driver.findElement(By.id("splash-32856-close-button"));
System.out.print("fuzoolPageCloseField  : Found ");
fuzoolPageCloseField.click();
System.out.print("fuzoolPageCloseField  : Clicked ");
WebElement userNameField = driver.findElement(By.id("userName"));
System.out.print("userNameField  : Found ");
userNameField.sendKeys("myusername");
}catch( NoSuchElementException nse){
logger.error("EXCEPTION  by id: NoSuchElementException ");
System.out.print("EXCEPTION  by id: NoSuchElementException ");
nse.printStackTrace();
}catch(StaleElementReferenceException ser){
logger.error("EXCEPTION  : StaleElementReferenceException ");
System.out.print("EXCEPTION  : StaleElementReferenceException ");
ser.printStackTrace();

}


try{
WebElement userNameField = driver.findElement(By.name("userName"));
userNameField.sendKeys("myusername");
}catch( NoSuchElementException nse){
logger.error("EXCEPTION  By name : NoSuchElementException ");
System.out.print("EXCEPTION  BY name : NoSuchElementException ");
nse.printStackTrace();
}catch(StaleElementReferenceException ser){
logger.error("EXCEPTION  : StaleElementReferenceException ");
System.out.print("EXCEPTION  : StaleElementReferenceException ");
ser.printStackTrace();

}

try{
String myWindowHandle = driver.getWindowHandle();
driver.switchTo().window(myWindowHandle);
WebDriverWait wait = (WebDriverWait)new WebDriverWait(driver,10)
.ignoring(StaleElementReferenceException.class);
assertTrue("The page title should start with the search string after the search.",
(wait.until(new ExpectedCondition<Boolean>() { //last exception comes here for timeout
@Override 
public Boolean apply(WebDriver d) {
WebElement userNameField = driver.findElement(By.name("userName"));
userNameField.sendKeys("myusername");
return true;
}
})
));
}catch( NoSuchElementException nse){
logger.error("EXCEPTION after driver getwindowhandle : NoSuchElementException ");
System.out.print("EXCEPTION  : NoSuchElementException ");
nse.printStackTrace();
}catch(StaleElementReferenceException ser){
logger.error("EXCEPTION  : StaleElementReferenceException ");
System.out.print("EXCEPTION  : StaleElementReferenceException ");
ser.printStackTrace();

}



}

private class ScreenshotHelper {

public void saveScreenshot(String screenshotFileName) throws IOException {
File screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(screenshot, new File(screenshotFileName));
}
}

public void waitForElementPresent(final By by, int timeout){ 
WebDriverWait wait = (WebDriverWait)new WebDriverWait(driver,timeout)
.ignoring(StaleElementReferenceException.class); 
wait.until(new org.openqa.selenium.support.ui.ExpectedCondition<Boolean>(){ 
@Override 
public Boolean apply(WebDriver webDriver) { 
WebElement element = webDriver.findElement(by); 
return element != null && element.isDisplayed(); 
} 
}); 
}
public static WebElement getElementByLocator( final By locator ) {
//  LOGGER.info( "Get element by locator: " + locator.toString() );  
final long startTime = System.currentTimeMillis();
Wait<WebDriver> wait = new FluentWait<WebDriver>( driver )
.withTimeout(30, TimeUnit.SECONDS)
.pollingEvery(5, TimeUnit.SECONDS)
.ignoring( StaleElementReferenceException.class ) ;
int tries = 0;
boolean found = false;
WebElement we = null;
while ( (System.currentTimeMillis() - startTime) < 91000 ) {
//   LOGGER.info( "Searching for element. Try number " + (tries++) ); 
try {
we = wait.until( ExpectedConditions.visibilityOfElementLocated( locator ) );
found = true;
break;
} catch ( StaleElementReferenceException e ) {      
//    LOGGER.info( "Stale element: \n" + e.getMessage() + "\n");
}
}
long endTime = System.currentTimeMillis();
long totalTime = endTime - startTime;
if ( found ) {
//   LOGGER.info("Found element after waiting for " + totalTime + " milliseconds." );
} else {
//   LOGGER.info( "Failed to find element after " + totalTime + " milliseconds." );
}
return we;
}


}

“FuzolPageCloseField”是一个在脚本中加载和单击的窗口,它有一个不同的名称,但我看到使用chrome DefDeveloper工具它有一个不同的ID名称,所以我在webdriver中使用它作为“splash-something”原始名称在IDE中如何工作。

堆栈跟踪如下所示:

由于驱动程序超时,堆栈跟踪在10秒间隔内出现NoSuchElementExcema异常,最后一个异常出现在第110行(wait.until

cd C:\NetBeansProject\Selenium\testseleniumsuite; JAVA_HOME=D:\\Java\\jdk1.6.0_45 M2_HOME=D:\\APIs\\Maven\\Binary\\apache-maven-3.0.4 cmd /c "\"\"D:\\APIs\\Maven\\Binary\\apache-maven-3.0.4\\bin\\mvn.bat\" -Dtest=com.mycomp.selenium.testseleniumsuite.test.TestloginSampleTest -DnetbeansProjectMappings= -Dmaven.ext.class.path=\"D:\\Program Files\\NetBeans 7.4\\java\\maven-nblib\\netbeans-eventspy.jar\" surefire:test\"\""
Running NetBeans Compile On Save execution. Phase execution is skipped and output directories of dependency projects (with Compile on Save turned on) will be used instead of their jar artifacts.
Scanning for projects...

------------------------------------------------------------------------
Building testseleniumsuite 1.0-SNAPSHOT
------------------------------------------------------------------------

--- maven-surefire-plugin:2.10:test (default-cli) @ testseleniumsuite ---
Surefire report directory: C:\NetBeansProject\Selenium\testseleniumsuite\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.mycomp.selenium.testseleniumsuite.test.TestloginSampleTest
BASE URL IS  : https://10.2.217.133:11115/myCompWebApp/login.go?siteLanguage=en&checked=trueStarting ChromeDriver (v2.8.241075) on port 21432
log4j:WARN No appenders could be found for logger (org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager).
log4j:WARN Please initialize the log4j system properly.
title : myCompOnline - CorporatefuzoolPageCloseField  : Found fuzoolPageCloseField  : Clicked    
  EXCEPTION  by id: NoSuchElementException org.openqa.selenium.NoSuchElementException: no such element
  (Session info: chrome=31.0.1650.63)
  (Driver info: chromedriver=2.8.241075,platform=Windows NT 6.1 SP1 x86) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 20.06 seconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.39.0', revision: '14fa800511cc5d66d426e08b0b2ab926c7ed7398', time: '2013-12-16 13:18:38'
System info: host: 'P5510041A', ip: '10.32.245.103', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.6.0_45'
Session ID: 62d2adad3c6cd4479b26a0f1fdab838e
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{platform=XP, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, chrome={userDataDir=C:\Users\5510041\AppData\Local\Temp\scoped_dir11832_12325}, rotatable=false, locationContextEnabled=true, version=31.0.1650.63, takesHeapSnapshot=true, cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=true, browserConnectionEnabled=false, nativeEvents=true, webStorageEnabled=true, applicationCacheEnabled=false, takesScreenshot=true}]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:307)
    at org.openqa.selenium.remote.RemoteWebDriver.findElementById(RemoteWebDriver.java:348)
    at org.openqa.selenium.By$ById.findElement(By.java:220)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:299)
    at com.mycomp.selenium.testseleniumsuite.test.TestloginSampleTest.UATLogin(TestloginSampleTest.java:75)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:69)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:48)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:292)
    at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
    at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)
    at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)
EXCEPTION  BY name : NoSuchElementException org.openqa.selenium.NoSuchElementException: no such element
  (Session info: chrome=31.0.1650.63)
  (Driver info: chromedriver=2.8.241075,platform=Windows NT 6.1 SP1 x86) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 20.05 seconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.39.0', revision: '14fa800511cc5d66d426e08b0b2ab926c7ed7398', time: '2013-12-16 13:18:38'
System info: host: 'P5510041A', ip: '10.32.245.103', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.6.0_45'
Session ID: 62d2adad3c6cd4479b26a0f1fdab838e
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{platform=XP, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, chrome={userDataDir=C:\Users\5510041\AppData\Local\Temp\scoped_dir11832_12325}, rotatable=false, locationContextEnabled=true, version=31.0.1650.63, takesHeapSnapshot=true, cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=true, browserConnectionEnabled=false, nativeEvents=true, webStorageEnabled=true, applicationCacheEnabled=false, takesScreenshot=true}]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:307)
    at org.openqa.selenium.remote.RemoteWebDriver.findElementByName(RemoteWebDriver.java:380)
    at org.openqa.selenium.By$ByName.findElement(By.java:305)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:299)
    at com.mycomp.selenium.testseleniumsuite.test.TestloginSampleTest.UATLogin(TestloginSampleTest.java:91)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:69)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:48)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:292)
    at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
    at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)
    at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 66.532 sec <<< FAILURE!

Results :

Tests in error: 
  UATLogin(com.mycomp.selenium.testseleniumsuite.test.TestloginSampleTest): Timed out after 10 seconds waiting for com.mycomp.selenium.testseleniumsuite.test.TestloginSampleTest$1@1e78fc6

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0

------------------------------------------------------------------------
BUILD FAILURE
------------------------------------------------------------------------
Total time: 1:07.488s
Finished at: Sun Dec 29 17:54:50 AST 2013
Final Memory: 4M/15M
------------------------------------------------------------------------
Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.10:test (default-cli) on project testseleniumsuite: There are test failures.

Please refer to C:\NetBeansProject\Selenium\testseleniumsuite\target\surefire-reports for the individual test results.
-> [Help 1]

To see the full stack trace of the errors, re-run Maven with the -e switch.
Re-run Maven using the -X switch to enable full debug logging.

For more information about the errors and possible solutions, please read the following articles:
[Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

希望有人能帮忙。

p、 我还运行了webdriver支持的类,它们也都在同一点上失败(webdriver支持的意思是实例化一个selenium对象并使用它进行测试,但甚至有:selenium.click(“id=splash-32856-close-button;”) 不工作,至少此si在驱动程序对象中工作)

提前感谢


共有2个答案

凌照
2023-03-14

我解决了我的问题。IDE中的脚本在IDE中运行良好,当在java/JUnit中导出它们时,语句如下

      driver.findElement(By.id("userName")).clear();
      driver.findElement(By.id("userName")).sendKeys("742817");

然而,我手动调试了它,并确保我能进入其中。我想我有一个iframe,这就是为什么司机不能看到元素。

所以我搜索的iFrame和工作。

  WebElement iframeWebelement = driver.findElement(By.xpath("//html/body/form/...../tbody/tr/td/iframe"));
   System.out.println("iframeWebelement : Found ");

  driver.switchTo().frame(iframeWebelement);
   WebElement userNameField = driver.findElement(By.id("userName"));
    System.out.println("userName  : Found ");
        userNameField.sendKeys("myusername");
            System.out.println("userName  : entered data ");

这对我有用。我不知道iFrame会是我需要切换到的东西。

希望这能帮助一些使用iFrame的人。

聂风史
2023-03-14

查看web浏览器中的HTML,找出它不起作用的原因。我怀疑您会发现ID正在更改,这就是Selenium找不到它们的原因——因为它们已经不存在了。

 类似资料:
  • 这是我的母版页表单代码 这是我的内容页 href=“http://code.jquery.com/ui/1.11.0/themes/smoothness/jquery-ui.css”> 学院/大学毕业日期

  • 我正在使用Amazon Linux AMI在EC2 AWS上运行以下脚本 从今天起,由于EC2上没有任何更改或新安装,脚本在昨天之前一直工作时停止工作。 本地计算机上的相同脚本仍然有效。 相反,在EC2上会出现以下错误: (节点:12636)UnhandledPromiseRejectionWarning:错误:导航失败,因为浏览器已断开连接!在cdpsession.lifecyclewatche

  • 我有一个VB脚本,它有一个相应的.bat文件,把它放在“C:\users\default\appdata\roaming\microsoft\windows\start menu\programs\startup”文件夹中。但是,在启动时,脚本不会完全运行。脚本应该创建任务栏快捷方式,但没有为我列出的Office产品创建快捷方式。 下面是脚本: 下面是.bat文件: 你知道为什么这行不通吗? 答:

  • 代码: 知道是什么导致了这个问题吗。可能与VPC或安全组有关?并给出了思考和建议。谢了。

  • 我是selenium的初学者,需要以下脚本的帮助,我正在尝试发送vai文本字段的值。下面是代码片段。 显示错误 线程“main”java中出现异常。lang.IllegalStateException:驱动程序可执行文件的路径必须由webdriver设置。铬。驱动系统属性;有关详细信息,请参阅https://github.com/SeleniumHQ/selenium/wiki/ChromeDri