Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试单击时出现java.lang.NullPointerException_Java_Selenium_Selenium Webdriver_Nullpointerexception_Cucumber - Fatal编程技术网

尝试单击时出现java.lang.NullPointerException

尝试单击时出现java.lang.NullPointerException,java,selenium,selenium-webdriver,nullpointerexception,cucumber,Java,Selenium,Selenium Webdriver,Nullpointerexception,Cucumber,当我尝试使用getClickOnHotelTab()方法时,得到java.lang.NullPointerException getClickOnHotelPage方法位于SearchHotelPage页面上。当我尝试在SearchHotelStep上使用此方法时,我得到了java.lang.NullPointerException 这是我的搜索酒店页面: public class SearchHotelPage { public WebDriver driver; private By c

当我尝试使用getClickOnHotelTab()方法时,得到java.lang.NullPointerException

getClickOnHotelPage方法位于SearchHotelPage页面上。当我尝试在SearchHotelStep上使用此方法时,我得到了java.lang.NullPointerException

这是我的搜索酒店页面:

public class SearchHotelPage {

public WebDriver driver;

private By clickOnHotelTab = By.xpath("//*[@id='PageNavBarSectionList']//a[@title='Hotéis']");
private By destinyClick1 = By.xpath("(//div[@role='button']/span)[3]");
private By destinyClick2 = By.xpath("//input[@placeholder='Destino ou nome do hotel']");

public SearchHotelPage(WebDriver driver) {
    this.driver = driver;
}

public WebElement getDestinyClick1() {
    return driver.findElement(destinyClick1);
}

public WebElement getDestinyClick2() {
    return driver.findElement(destinyClick2);
}

public WebElement getClickOnHotelTab() {
    return driver.findElement(clickOnHotelTab);
}
@RunWith(Cucumber.class)
public class SearchHotelStep extends BasePage {

public WebDriver driver;

@When("^Choose destiny or hotel name$")
public void choose_destiny_or_hotel_name() throws Throwable {
    
    SearchHotelPage destinyClick = new SearchHotelPage(driver);
    destinyClick.getClickOnHotelTab().click();
    //destinyClick.getDestinyClick1();
    //destinyClick.getDestinyClick2().sendKeys("cancun");
    //destinyClick.getDestinyClick2().click();
}
Scenario: Search Hotel With Travel Insurance             # SearchHotelWithTravelInsurance.feature:3
Given The browser is initialized                       # 
SearchAirTicketsStep.the_browser_is_initialized()
When User go to "https://www.turismocity.com.br/" site # SearchAirTicketsStep.user_go_to_site(String)
And Choose destiny or hotel name                       # 
SearchHotelStep.choose_destiny_or_hotel_name()
java.lang.NullPointerException
at pages.SearchHotelPage.getClickOnHotelTab(SearchHotelPage.java:28)
at steps.SearchHotelStep.choose_destiny_or_hotel_name(SearchHotelStep.java:22)
at ?.And Choose destiny or hotel name(SearchHotelWithTravelInsurance.feature:6)

And Choose round trip date                             # 
SearchAirTicketsStep.choose_round_trip_date()
And Choose quantity of guests                          # SearchHotelStep.choose_quantity_of_guests()
When Click on search button from hotels search         # 
SearchHotelStep.click_on_search_button_from_hotels_search()
Then The options of hotel are shown                    # 
SearchHotelStep.the_options_of_hotel_are_shown()
Then The page of travel insurance is open              # 
SearchHotelStep.the_page_of_travel_insurance_is_open()
Then The browser is closed                             # SearchAirTicketsStep.the_browser_is_closed()

Failed scenarios:
SearchHotelWithTravelInsurance.feature:3 # Scenario: Search Hotel With Travel Insurance

1 Scenarios (1 failed)
9 Steps (1 failed, 6 skipped, 2 passed)
0m9,057s

java.lang.NullPointerException
at pages.SearchHotelPage.getClickOnHotelTab(SearchHotelPage.java:28)
at steps.SearchHotelStep.choose_destiny_or_hotel_name(SearchHotelStep.java:22)
at ?.And Choose destiny or hotel name(SearchHotelWithTravelInsurance.feature:6)

这是我的搜索酒店步骤:

public class SearchHotelPage {

public WebDriver driver;

private By clickOnHotelTab = By.xpath("//*[@id='PageNavBarSectionList']//a[@title='Hotéis']");
private By destinyClick1 = By.xpath("(//div[@role='button']/span)[3]");
private By destinyClick2 = By.xpath("//input[@placeholder='Destino ou nome do hotel']");

public SearchHotelPage(WebDriver driver) {
    this.driver = driver;
}

public WebElement getDestinyClick1() {
    return driver.findElement(destinyClick1);
}

public WebElement getDestinyClick2() {
    return driver.findElement(destinyClick2);
}

public WebElement getClickOnHotelTab() {
    return driver.findElement(clickOnHotelTab);
}
@RunWith(Cucumber.class)
public class SearchHotelStep extends BasePage {

public WebDriver driver;

@When("^Choose destiny or hotel name$")
public void choose_destiny_or_hotel_name() throws Throwable {
    
    SearchHotelPage destinyClick = new SearchHotelPage(driver);
    destinyClick.getClickOnHotelTab().click();
    //destinyClick.getDestinyClick1();
    //destinyClick.getDestinyClick2().sendKeys("cancun");
    //destinyClick.getDestinyClick2().click();
}
Scenario: Search Hotel With Travel Insurance             # SearchHotelWithTravelInsurance.feature:3
Given The browser is initialized                       # 
SearchAirTicketsStep.the_browser_is_initialized()
When User go to "https://www.turismocity.com.br/" site # SearchAirTicketsStep.user_go_to_site(String)
And Choose destiny or hotel name                       # 
SearchHotelStep.choose_destiny_or_hotel_name()
java.lang.NullPointerException
at pages.SearchHotelPage.getClickOnHotelTab(SearchHotelPage.java:28)
at steps.SearchHotelStep.choose_destiny_or_hotel_name(SearchHotelStep.java:22)
at ?.And Choose destiny or hotel name(SearchHotelWithTravelInsurance.feature:6)

And Choose round trip date                             # 
SearchAirTicketsStep.choose_round_trip_date()
And Choose quantity of guests                          # SearchHotelStep.choose_quantity_of_guests()
When Click on search button from hotels search         # 
SearchHotelStep.click_on_search_button_from_hotels_search()
Then The options of hotel are shown                    # 
SearchHotelStep.the_options_of_hotel_are_shown()
Then The page of travel insurance is open              # 
SearchHotelStep.the_page_of_travel_insurance_is_open()
Then The browser is closed                             # SearchAirTicketsStep.the_browser_is_closed()

Failed scenarios:
SearchHotelWithTravelInsurance.feature:3 # Scenario: Search Hotel With Travel Insurance

1 Scenarios (1 failed)
9 Steps (1 failed, 6 skipped, 2 passed)
0m9,057s

java.lang.NullPointerException
at pages.SearchHotelPage.getClickOnHotelTab(SearchHotelPage.java:28)
at steps.SearchHotelStep.choose_destiny_or_hotel_name(SearchHotelStep.java:22)
at ?.And Choose destiny or hotel name(SearchHotelWithTravelInsurance.feature:6)
这是输出:

public class SearchHotelPage {

public WebDriver driver;

private By clickOnHotelTab = By.xpath("//*[@id='PageNavBarSectionList']//a[@title='Hotéis']");
private By destinyClick1 = By.xpath("(//div[@role='button']/span)[3]");
private By destinyClick2 = By.xpath("//input[@placeholder='Destino ou nome do hotel']");

public SearchHotelPage(WebDriver driver) {
    this.driver = driver;
}

public WebElement getDestinyClick1() {
    return driver.findElement(destinyClick1);
}

public WebElement getDestinyClick2() {
    return driver.findElement(destinyClick2);
}

public WebElement getClickOnHotelTab() {
    return driver.findElement(clickOnHotelTab);
}
@RunWith(Cucumber.class)
public class SearchHotelStep extends BasePage {

public WebDriver driver;

@When("^Choose destiny or hotel name$")
public void choose_destiny_or_hotel_name() throws Throwable {
    
    SearchHotelPage destinyClick = new SearchHotelPage(driver);
    destinyClick.getClickOnHotelTab().click();
    //destinyClick.getDestinyClick1();
    //destinyClick.getDestinyClick2().sendKeys("cancun");
    //destinyClick.getDestinyClick2().click();
}
Scenario: Search Hotel With Travel Insurance             # SearchHotelWithTravelInsurance.feature:3
Given The browser is initialized                       # 
SearchAirTicketsStep.the_browser_is_initialized()
When User go to "https://www.turismocity.com.br/" site # SearchAirTicketsStep.user_go_to_site(String)
And Choose destiny or hotel name                       # 
SearchHotelStep.choose_destiny_or_hotel_name()
java.lang.NullPointerException
at pages.SearchHotelPage.getClickOnHotelTab(SearchHotelPage.java:28)
at steps.SearchHotelStep.choose_destiny_or_hotel_name(SearchHotelStep.java:22)
at ?.And Choose destiny or hotel name(SearchHotelWithTravelInsurance.feature:6)

And Choose round trip date                             # 
SearchAirTicketsStep.choose_round_trip_date()
And Choose quantity of guests                          # SearchHotelStep.choose_quantity_of_guests()
When Click on search button from hotels search         # 
SearchHotelStep.click_on_search_button_from_hotels_search()
Then The options of hotel are shown                    # 
SearchHotelStep.the_options_of_hotel_are_shown()
Then The page of travel insurance is open              # 
SearchHotelStep.the_page_of_travel_insurance_is_open()
Then The browser is closed                             # SearchAirTicketsStep.the_browser_is_closed()

Failed scenarios:
SearchHotelWithTravelInsurance.feature:3 # Scenario: Search Hotel With Travel Insurance

1 Scenarios (1 failed)
9 Steps (1 failed, 6 skipped, 2 passed)
0m9,057s

java.lang.NullPointerException
at pages.SearchHotelPage.getClickOnHotelTab(SearchHotelPage.java:28)
at steps.SearchHotelStep.choose_destiny_or_hotel_name(SearchHotelStep.java:22)
at ?.And Choose destiny or hotel name(SearchHotelWithTravelInsurance.feature:6)

您能帮助我吗?

我不确定selenium是如何工作的,但它看起来像是在SearchHotelStep类中从未分配或创建
WebDriver驱动程序
变量,因此它总是会创建空指针错误

在使用驱动程序之前,您需要创建或分配驱动程序

例如
driver=yourCreatedDriver
公共WebDriver=newWebDriver(…)

大概是这样的:

@RunWith(Cucumber.class)
public class SearchHotelStep extends BasePage {

public WebDriver driver = new WebDriver(...);

@When("^Choose destiny or hotel name$")
public void choose_destiny_or_hotel_name() throws Throwable {
    
    SearchHotelPage destinyClick = new SearchHotelPage(driver);
    destinyClick.getClickOnHotelTab().click();
}

抱歉,非常感谢!!!这和你上面写的不完全一样,但你的想法是完全正确的,它帮助了我。我非常感激!!!Alex Rudenko,谢谢你的帮助,但是我可以通过另一位成员的评论来解决这个问题。谢谢,伙计!!!