2017-07-26 9 views
-4

ウェブサイトをテストするためのスクリプトを作成しました。すべての要素についてGoogle ChromeからXpathを取得しましたが、Microsoft Edgeでテストしたかったのですが、 、私はorg.openqa.selenium.remote.ProtocolHandshake createSessionエラーが発生します。だから私の推測では、それはEdge上の要素を見つけることができないということです。ChromeからのXPathがMicrosoft Edgeで動作しない

public class testing 
{ 
    ExtentHtmlReporter htmlreporter = new ExtentHtmlReporter("D:\\Selenium\\test_report.html"); 
    ExtentReports extent = new ExtentReports(); 
    ExtentTest test; 
    JavascriptExecutor jse; 
    WebDriver driver; 

    @BeforeTest 
    public void setup() 
    { 
     System.setProperty("webdriver.edge.driver", "D:\\Selenium\\MicrosoftWebDriver.exe"); 

     driver = new EdgeDriver(); 
     driver.manage().window().maximize(); 
     extent.attachReporter(htmlreporter); 

     jse = (JavascriptExecutor)driver; 
     extent.setSystemInfo("Browseer", "Microsoft Edge"); 
     extent.setSystemInfo("OS", "Windows 10"); 

     driver.get("https://www.hoteltreeoflife.com/reservation"); 
    } 
    @Test 
    public void test1() 
    { 
     test = extent.createTest("Test Case 1 : Selecting the dates", "Clicking check availabiluty with default dates"); 

     test.info("Finding Check Availability"); 
     driver.findElement(By.xpath("/html/body/div[1]/div[3]/div[2]/div/div/form/div[4]/button")).click(); //<-- This is the element 
     test.info("Clicks on Check Availability"); 

     String title = driver.getTitle(); 
     Assert.assertTrue(title.contains("Choose Your Room")); 
     test.info("Successfully selected dates"); 
    } 
} 

私はEdge上のXpathを取得する方法も見つけられませんでした。

EDIT:

これは完全な誤りである:

は、絶対パスのCheck availability代わりに、ボタンをクリックしてください:ここで

[TestNG] Running: 
    Command line suite 

[VerboseTestNG] RUNNING: Suite: "Command line test" containing "1" Tests (config: null) 
[VerboseTestNG] INVOKING CONFIGURATION: "Command line test" - @BeforeTest newpackage.testing.setup() 
[16:46:55.985] - Listening on http://localhost:4848/ 
Jul 26, 2017 4:46:57 PM org.openqa.selenium.remote.ProtocolHandshake createSession 
INFO: Detected dialect: OSS 
[VerboseTestNG] PASSED CONFIGURATION: "Command line test" - @BeforeTest newpackage.testing.setup() finished in 4794 ms 
[VerboseTestNG] INVOKING: "Command line test" - newpackage.testing.test1() 
[VerboseTestNG] FAILED: "Command line test" - newpackage.testing.test1() finished in 303 ms 
[VerboseTestNG] java.lang.AssertionError: expected [true] but found [false] 
[VerboseTestNG]  at newpackage.testing.test1(testing.java:53) 
[VerboseTestNG] INVOKING CONFIGURATION: "Command line test" - @AfterMethod newpackage.testing.check(org.testng.ITestResult)(value(s): [TestResult name=test1 status=FAILURE method=testing.test1()[pri:0, instance:[email protected]] output={null}]) 
[VerboseTestNG] PASSED CONFIGURATION: "Command line test" - @AfterMethod newpackage.testing.check(org.testng.ITestResult)(value(s): [TestResult name=test1 status=FAILURE method=testing.test1()[pri:0, instance:[email protected]] output={null}]) finished in 462 ms 
[VerboseTestNG] INVOKING CONFIGURATION: "Command line test" - @AfterTest newpackage.testing.close() 
[16:47:03.511] - Stopping server. 
[VerboseTestNG] PASSED CONFIGURATION: "Command line test" - @AfterTest newpackage.testing.close() finished in 3788 ms 
[VerboseTestNG] 
[VerboseTestNG] =============================================== 
[VerboseTestNG]  Command line test 
[VerboseTestNG]  Tests run: 1, Failures: 1, Skips: 0 
[VerboseTestNG] =============================================== 

=============================================== 
Command line suite 
Total tests run: 1, Failures: 1, Skips: 0 
=============================================== 

Java Result: 1 
+2

完全なエラーは何ですか?それはむしろエッジに接続することさえできません。 –

+0

私はそれが要素を見つけることに関連しているとは思わない。 – NarendraR

+0

@TamasHegedusこれはEdgeと接続してURLを開きますが、driver.findElement(By.xpath( "/ html/body/div [1]/div [3]/div)要素をクリックするとテストが失敗します。 –

答えて

1

は、あなたの質問への答えでありますあなたが使用した:

driver.findElement(By.xpath("/html/body/div[1]/div[3]/div[2]/div/div/form/div[4]/button")).click(); 

xpath次固有の論理を使用することを検討してください:

driver.findElement(By.xpath("//button[@class='btn btn-primary btn-block']")).click(); 

が、これは、あなたの質問に答えるなら、私に教えてください。

0

私はあなたがしなければならないことは、明示的な待機を使用することであると思います。まだ問題がなければ修正するべきです。

WebDriverWait wait = new WebDriverWait(driver, 10); 
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.xpath(""/html/body/div[1]/div[3]/div[2]/div/div/form/div[4]/button""))); 
element.click(); 

要素を見つけるのではなく、それを使用してメソッドに変わり、いつでも呼び出すことができます。うまくいきたいです

関連する問題