为何浏览器无法打开链接且代码报“The method getText() is undefined...”等错误?
问题分析与解决方案
让我们一步步解决你遇到的两个问题:
一、浏览器启动后链接未加载的问题
这个问题的核心是WebDriver实例的作用域错误。在你的driverCall()方法中,你重新声明了一个局部的WebDriver driver变量,这就导致类成员变量driver并没有被初始化——你启动的是局部变量对应的浏览器,但后续login()方法调用的是未初始化的类成员driver,自然无法加载链接。
修复代码:
修改driverCall()方法,去掉局部变量的声明,直接给类成员变量赋值:
public void driverCall() { System.setProperty("webdriver.chrome.driver", "./drivers/chromedriver.exe"); // 去掉前面的WebDriver,直接给类成员变量赋值 driver = new ChromeDriver(); driver.manage().window().maximize(); }
二、motorvehicle变量相关的两个代码错误
你的addHireFromMotorVehicleOwn()方法里有两处明显的错误,我们逐一分析:
错误1:Type mismatch: cannot convert from void to String
driver.findElement(By.xpath("//mat-option[@id='Pickup']")).click()这个方法的返回值是void(没有返回值),你不能把它赋值给一个String类型的变量motorvehiclename1。
错误2:The method getText() is undefined for the type String
motorvehiclename1是String类型,而getText()是WebElement类的方法,String本身没有这个方法,所以会报错。
修复代码:
先获取对应的WebElement元素,执行点击操作后,再调用该元素的getText()方法获取文本:
public void addHireFromMotorVehicleOwn(String motorvehicle) { driver.findElement(By.xpath("//*[@id='add-vehicle']")).click();//click on add vehicle driver.findElement(By.xpath("(//*[@class='mat-radio-inner-circle'])[1]")).click();//click on own radio button //1st value driver.findElement(By.xpath("//mat-form-field[@id='vehicleCategoryOwn']")).click();//click on dropdown value // 先获取WebElement,再操作 WebElement pickupOption = driver.findElement(By.xpath("//mat-option[@id='Pickup']")); pickupOption.click();//click on pickup from dropdown String motorvehiclename1 = pickupOption.getText(); }
内容的提问来源于stack exchange,提问作者Jerin Thomas
相关产品推荐
相关产品推荐

