Как использовать CssSelectors - PullRequest
0 голосов
/ 02 января 2019

Я хочу проверить вход на сайт ebay без Xpath.но это не работает, я пытался так много часов.объясните мне ошибку.
1. Откройте веб-сайт Google
2. Найдите «ebay» на веб-сайте
3. Нажмите на соответствующий результат
4. Перейдите на http://www.ebay.com веб-сайт
5. Нажмите на ссылку «Войти», чтобы перейти на страницу входа в eBay
6. Введите адрес электронной почты / пароль
7. Нажмите кнопку «Вход»
8. Проверьте свое имя пользователя.
Сценарий пакета;

    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.testng.annotations.Test;

    public class TestEbay_login {
        @Test
        public void ebay_login() throws InterruptedException {

                System.setProperty("webdriver.gecko.driver", "C:\\Users\\Senani\\Downloads\\Programs\\geckodriver-v0.23.0-win64\\geckodriver.exe");
                WebDriver driver = new  FirefoxDriver();
                //driver.get("https://www.google.com");
                driver.navigate().to("https://www.google.com");
                driver.manage().window().maximize();
                driver.findElement(By.name("q")).sendKeys("ebay");
                driver.findElement(By.name("btnK")).submit();
                driver.findElement(By.cssSelector("a[href='www.ebay.com']")).click();
                driver.findElement(By.linkText("Sign in")).click();
                driver.findElement(By.id("userid")).sendKeys("#########");
                driver.findElement(By.id("pass")).sendKeys("###########");

                driver.findElement(By.id("sgnBt")).click();


        }

    }

СБОЙ: ebay_login org.openqa.selenium.NoSuchElementException: Невозможно найти элемент: a [href = 'www.ebay.com'] Для документации по этой ошибкеПожалуйста, посетите: https://www.seleniumhq.org/exceptions/no_such_element.html Информация о сборке: версия: '3.141.59', редакция: 'e82be7d358', время: '2018-11-14T08: 25: 48'

Ответы [ 2 ]

0 голосов
/ 02 января 2019

После того, как вы начнете поиск, вам нужно вызвать WebDriverWait для желаемого элемента, чтобы он был активным для клика , и вы можете использовать следующее решение:

new WebDriverWait(driver, 20).until(
   ExpectedConditions.elementToBeClickable(By.cssSelector("a[href='https://www.ebay.com/']"))
).click();
0 голосов
/ 02 января 2019

Здесь вы столкнетесь с двумя проблемами:

Во-первых, хотя текст Google отображает в результатах поиска, что URL-адрес https://www.ebay.com, фактический href тега <a> является внутренним (бред ) ссылка используется для отслеживания целей. Итак, в моем браузере результат eBay href фактически указывает на:

/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=2ahUKEwjItIGq48_fAhWiSt8KHVHWCMUQFjAAegQIARAC&url=https%3A%2F%2Fwww.ebay.com%2F&usg=AOvVaw2IUWs7JZelxpS-zydrZoSX

... который, конечно, перенаправляет на сайт eBay.

Вторая проблема, с которой вы столкнетесь, заключается в том, что для селектора CSS a[href='www.ebay.com'] требуется точное соответствие - этот селектор не соответствует ссылке, указывающей на https://www.ebay.com .

РЕДАКТИРОВАТЬ: копаясь в HTML на странице результатов Google, похоже, что ссылка на боковой панели на самом деле идет прямо на eBay.com. Таким образом, вы можете отредактировать ваш CSS-селектор так: a[href='http://www.ebay.com']

(Обратите внимание, что по причинам, которые мне не ясны, эта ссылка на боковую панель ведет на незащищенную версию домашней страницы eBay.)

...