eclipse - يمكن ل وبدريفر تسجيل الدخول في كروم، وليس في فايرفوكس: "تعذر العثور على وثيقة امتلاك" خطأ




selenium-webdriver testng (2)

هذه هي المشكلة الناجمة عن إصدار فايرفوكس قيد الاستخدام، 49.0.2. انها حالة غريبة وغير واضح لماذا يجري نقل وظائف تسجيل الدخول من قبل إصدار المتصفح قيد الاستخدام؛ ومع ذلك، فإن حل المشكلة يتطلب الرجوع إلى الإصدار 46.0. هذا إصلاح المشكلة.

لدي 2 الطبقات التي تنتمي إلى نفس الحزمة في مشروع جافا تستنغ ولقد أعلنت "سائق ويبدريفر" ثابت العام في الصف ألف في تلك الفئة، أطلقت الكروم، فتح عنوان ورل، تم إدخال اسم المستخدم وكلمة المرور و زر تسجيل الدخول النقر. عملت بشكل جيد باستخدام التعليق التوضيحيBeforeClass.

أنا نسخ نفس الرمز إلى فئة B وتغيير مثيل المتصفح إلى فيريفوكس في حين لا يزال يعلن "سائق ويبدريفر كما ثابت العام. تم إطلاق فايرفوكس، تم فتح عنوان ورل، تم إدخال اسم المستخدم وكلمة المرور ولكن لم زر تسجيل الدخول لم تنقر أو ترسل. أخفق الاختبار مع الخطأ:

org.openqa.selenium.JavascriptException: خطأ: تعذر العثور على وثيقة امتلاك.

لم أكن أبدا عبر هذا الخطأ وليس لديهم فكرة ما هو 'امتلاك وثيقة' يتم الإشارة إليها.أنا أشك في أنه لديه علاقة مع مستوى الوصول لأي من الفئتين أو كليهما. وفيما يلي مقتطف من الفئتين. هل فاتني شيء؟

*

package com.example;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class TheChrome {
public static WebDriver driver;


@BeforeClass(alwaysRun = true)
public void launchBrowser() {

driver = new ChromeDriver();
driver.get("http://www.example.com");
driver.manage().window().maximize();

@Test
public void verifyLogin() throws InterruptedException {

driver.findElement(By.id("username")).sendKeys("user");
driver.findElement(By.id("password")).sendKeys("password");
Thread.sleep(3000);
driver.findElement(By.id("loginButton")).click();

*

package com.example;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class TheFirefox {

public static WebDriver driver;


@BeforeClass(alwaysRun = true)
public void launchBrowser() throws InterruptedException {

driver = new FirefoxDriver();

driver.get("http://www.example.com");
driver.manage().window().maximize();
Thread.sleep(3000);           
}   


@Test
public void verifyLogin() throws InterruptedException {

driver.findElement(By.id("username")).sendKeys("user");
driver.findElement(By.id("password")).sendKeys("password");
Thread.sleep(3000);
driver.findElement(By.id("loginButton")).click();

تحرير: انظر هذا السؤال والإجابة ذات الصلة جدا

إذا عدلت المشاركة لتضمين هتمل ذي الصلة، فسيكون ذلك أسهل في المساعدة.

محاولة مع كسليكتور:

افحص زر تسجيل الدخول. داخل المفتش، انقر بزر الماوس الأيمن على العنصر وانسخ محدد كس.

driver.findElement(By.cssSelector("copypasta")).click();

محاولة لتحديد موقع زباث باستخدام العديد من الطرق المختلفة المدرجة في هذه الغش ورقة مفيدة .

على سبيل المثال، إذا كان نص هتمل الداخلي للزر هو "تسجيل الدخول":

driver.findElement(By.xpath("//button[contains(text(), 'Login']")).click();

هناك العديد من الطرق المختلفة للقيام بذلك، لذلك فإن النظر إلى هتمل الخاص بك يساعد الناس على مساعدتك، على ما أعتقد.