Перейти к содержимому

Фотография

Выбор оплаты в чекбоксе , Selenium WebDriver

seenium checkbox webdriver error

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 11

#1 akamanax

akamanax

    Новый участник

  • Members
  • Pip
  • 7 сообщений

Отправлено 02 ноября 2015 - 12:32

Здравствуйте , учусь писать тесты на Selenium WebDriver 2.48.2 и столкнулся с проблемой , не получаеться выбрать способ оплаты в чекбоксе (Браузер Mozilla Firefox 41.0.2 ) . Прошу вас не ругать меня за плохо оформленный код , если знаете как лучше оформить код , то пожалуйста посоветуйте .

package com.selenium;

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

 public class objednavka {
	 public static void main(String[] args) {
			WebDriver driver = new FirefoxDriver();
			driver.get("http://projects.vlastnieshop.cz/vitalvibe/cs/");
			driver.findElement(By.id("search_query_top")).sendKeys("Mladý ječmen Bio");
			driver.findElement(By.id("search_button")).click();
			driver.findElement(By.cssSelector(".product-list-box li:nth-of-type(1) a")).click();
			driver.findElement(By.name("Submit")).click();
			driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
			driver.findElement(By.xpath("//a[@id='button_order_cart']")).click();
			driver.findElement(By.id("firstname")).sendKeys("Jmeno1");
			driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
			driver.findElement(By.id("lastname")).sendKeys("Prijmeni2");
			driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
			driver.findElement(By.id("address1")).sendKeys("Šumavská 1050/19");
			driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
			driver.findElement(By.id("postcode")).sendKeys("120 00");
			driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
			driver.findElement(By.id("city")).sendKeys("Praha");
			driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
			driver.findElement(By.id("email")).sendKeys("test1@seznam.cz");
			driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
			driver.findElement(By.id("phone_mobile")).sendKeys("776008016");
			driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
			driver.findElement(By.cssSelector("input[Value='opc_pid_0']")).click();
			driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
			driver.findElement(By.className("form-send-button")).click();
			driver.close();
			driver.quit();
			
	}

}

Прикрепленные файлы

  • Прикрепленный файл  chyba.jpg   76,59К   0 Количество загрузок:

  • 0

#2 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 02 ноября 2015 - 12:48

Выложи HTML код этого блока


  • 0

#3 Vad1m198

Vad1m198

    Активный участник

  • Members
  • PipPip
  • 115 сообщений
  • ФИО:Вадим


Отправлено 02 ноября 2015 - 12:51

Задавая вопрос, пожалуйста, указывайте следующую информацию:
-- к какому из инструментов семейства Selenium относится ваш вопрос -- WebDriver, RC, IDE, Grid
-- какую версию Selenium вы используете
-- в каком браузере у вас возникают проблема (включая версию браузера)

Кроме того, вы гораздо быстрее получите ответ на свой вопрос, если вместо длинного путанного описания просто укажете:
-- фрагмент исполняемого кода, в котором у вас возникает ошибка
-- детальное сообщение об ошибке (stacktrace)
-- ссылку на страницу, на которой этот фрагмент кода можно выполнить и тем самым воспроизвести вашу проблему.


  • 0

#4 akamanax

akamanax

    Новый участник

  • Members
  • Pip
  • 7 сообщений

Отправлено 02 ноября 2015 - 13:00

Задавая вопрос, пожалуйста, указывайте следующую информацию:
-- к какому из инструментов семейства Selenium относится ваш вопрос -- WebDriver, RC, IDE, Grid
-- какую версию Selenium вы используете
-- в каком браузере у вас возникают проблема (включая версию браузера)

Кроме того, вы гораздо быстрее получите ответ на свой вопрос, если вместо длинного путанного описания просто укажете:
-- фрагмент исполняемого кода, в котором у вас возникает ошибка
-- детальное сообщение об ошибке (stacktrace)
-- ссылку на страницу, на которой этот фрагмент кода можно выполнить и тем самым воспроизвести вашу проблему.

Если внимательно прочитать пост , то там найдете , Инструмент и его версию , браузер и его версию .


  • 0

#5 akamanax

akamanax

    Новый участник

  • Members
  • Pip
  • 7 сообщений

Отправлено 02 ноября 2015 - 13:05

Выложи HTML код этого блока

Если я вас правильно понял , то вот он : 
 

<div id="HOOK_PAYMENT_PARSED">
                <label class="form-bottom-label">
            <div class="payment_action"><div class="iradio"><input type="radio" name="id_payment_method" value="opc_pid_0" id="payment_opc_pid_0"></div></div>
            <span class="form-bottom-span1">Zaplatit bankovním převodem</span>
            <span class="form-bottom-span2">+ 0 Kč</span>
            <a href="" class="form-bottom-link fancy_tooltip">info</a>
            <div class="hidden show_details"><p>Bankovní převod v Kč Peníze nám můžete poslat bankovním převodem na účet. Po dokončení Vaší objednávky a zvolení platby bankovním převodem obdržíte informace pro platbu na náš bankovní účet včetně variabilního symbolu (číslo zálohové faktury). Vždy je třeba uvést variabilní symbol, abychom mohli Vaši platbu přijmout. Peníze nám na účet dorazí většinou během 0-2 pracovních dní od vašeho odeslání v závislosti na Vaší bance. Zboží je zasíláno ihned po obdržení platby. Při převzetí zásilky od dopravní společnosti již nic neplatíte. Zboží pro Vás bude rezervováno 10 dní, poté může být Vaše objednávka zrušena. Naše bankovní spojení:Platby v rámci České republiky: č.ú.: 2900216850/2010Nutno uvést variabilní symbol (VS) = číslo objednávky (je uveden na zálohové faktuře) IBAN: CZ6020100000002900216850 SWIFT: FIOBCZPPXXX</p></div>
        </label>
                <label class="form-bottom-label">
            <div class="payment_action"><div class="iradio"><input type="radio" name="id_payment_method" value="opc_pid_1" id="payment_opc_pid_1"></div></div>
            <span class="form-bottom-span1">Zaplatit kartou online</span>
            <span class="form-bottom-span2">+ 0 Kč</span>
            <a href="" class="form-bottom-link fancy_tooltip">info</a>
            <div class="hidden show_details"><p>Platební kartou online (3-D Secure) Pokud vlastníte platební kartu MasterCard, Maestro nebo VISA, která umožňuje platby na internetu (máte-li pochybnosti, informujte se u své banky), můžete ji využít k úhradě zboží online. Při dokončení zakázky budete přesměrováni na platební bránu WebPay využívanou Komerční bankou, a.s., která zároveň garantuje maximální možnou míru zabezpečení. Pokud platíte kartou poprvé, budete na bráně WebPay zadávat šestnáctimístné číslo karty, datum expirace, a CVC/CVV kód, všechny údaje máte na kartě. Nemusíte se obávat, přenos informací je šifrovaný a tedy naprosto bezpečný. Veškeré údaje o platbách jsou předávány zabezpečenou cestou a Vitalvibe s.r.o. jako obchodník k nim nemá přístup, ani je nikde neukládá. Platby platební kartou jsou připisovány téměř okamžitě a díky tomu můžeme objednávku rychle expedovat.</p></div>
        </label>
                <label class="form-bottom-label">
            <div class="payment_action"><div class="iradio"><input type="radio" name="id_payment_method" value="opc_pid_2" id="payment_opc_pid_2"></div></div>
            <span class="form-bottom-span1">Zaplatit přes PayPal</span>
            <span class="form-bottom-span2">+ 33 Kč</span>
            <a href="" class="form-bottom-link fancy_tooltip">info</a>
            <div class="hidden show_details"><p>PayPal PayPal je jednoduchý a bezpečný systém pro elektronické platby. Umožňuje platit pomocí Vašeho účtu u Paypalu, nebo kreditními kartami bez poskytnutí citlivých údajů obchodníkovi. Platby přes Paypal jsou připisovány téměř okamžitě a díky tomu můžeme objednávku rychle expedovat. Při platbě přes Paypal je účtován poplatek 3,4%, který je poplatkem službě Paypal za využívání služeb.</p></div>
        </label>
                

</div>
        </div>

  • 0

#6 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 02 ноября 2015 - 13:29

А так не пробовали ?

driver.findElement(By.xpath("//div[contains(@id,'HOOK_PAYMENT_PARSED')]//input[contains(@id,'payment_opc_pid_0')]")).click();

И какую ошибку выдает в консоль при падении теста ?


  • 0

#7 Vad1m198

Vad1m198

    Активный участник

  • Members
  • PipPip
  • 115 сообщений
  • ФИО:Вадим


Отправлено 02 ноября 2015 - 14:14

 

Задавая вопрос, пожалуйста, указывайте следующую информацию:
-- к какому из инструментов семейства Selenium относится ваш вопрос -- WebDriver, RC, IDE, Grid
-- какую версию Selenium вы используете
-- в каком браузере у вас возникают проблема (включая версию браузера)

Кроме того, вы гораздо быстрее получите ответ на свой вопрос, если вместо длинного путанного описания просто укажете:
-- фрагмент исполняемого кода, в котором у вас возникает ошибка
-- детальное сообщение об ошибке (stacktrace)
-- ссылку на страницу, на которой этот фрагмент кода можно выполнить и тем самым воспроизвести вашу проблему.

Если внимательно прочитать пост , то там найдете , Инструмент и его версию , браузер и его версию .

 

Вы хоть-бы указали на какой строчке возникает ошибка, и какая это ошибка. Было бы проще...


  • 0

#8 tshuvaev

tshuvaev

    Новый участник

  • Members
  • Pip
  • 53 сообщений
  • ФИО:Timur
  • Город:Москва

Отправлено 02 ноября 2015 - 15:26

driver.findElement(By.cssSelector("input[Value='opc_pid_0']")).click();
А почему нельзя написать так -
driver.findElement(By.id("payment_opc_pid_0")).click();

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

driver.findElement(By.id("payment_opc_pid_2")).click();
я больше на python пишу попробуй может будет тыкать?

 


  • 0

#9 akamanax

akamanax

    Новый участник

  • Members
  • Pip
  • 7 сообщений

Отправлено 03 ноября 2015 - 22:08

driver.findElement(By.cssSelector("input[Value='opc_pid_0']")).click();
А почему нельзя написать так -
driver.findElement(By.id("payment_opc_pid_0")).click();

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

driver.findElement(By.id("payment_opc_pid_2")).click();
я больше на python пишу попробуй может будет тыкать?
 

Спасибо помог вариант  driver.findElement(By.id("payment_opc_pid_0")).click(); 


  • 0

#10 akamanax

akamanax

    Новый участник

  • Members
  • Pip
  • 7 сообщений

Отправлено 04 ноября 2015 - 10:08

driver.findElement(By.cssSelector("input[Value='opc_pid_0']")).click();
А почему нельзя написать так -
driver.findElement(By.id("payment_opc_pid_0")).click();

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

driver.findElement(By.id("payment_opc_pid_2")).click();
я больше на python пишу попробуй может будет тыкать?
 

Ошибка не решилась , несколько раз запускал тест и все было отлично , но сейчас выдает :

<div id="opc_payment_errors" class="error alert alert-danger" style="">
<b>Prosím zvolte platební metodu.</b></div>


  • 0

#11 ali179s

ali179s

    Новый участник

  • Members
  • Pip
  • 12 сообщений
  • ФИО:Анастасия Суходола

Отправлено 14 марта 2016 - 19:52

-


  • 0

#12 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 15 марта 2016 - 07:28

 

driver.findElement(By.cssSelector("input[Value='opc_pid_0']")).click();
А почему нельзя написать так -
driver.findElement(By.id("payment_opc_pid_0")).click();

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

driver.findElement(By.id("payment_opc_pid_2")).click();
я больше на python пишу попробуй может будет тыкать?
 

Ошибка не решилась , несколько раз запускал тест и все было отлично , но сейчас выдает :

<div id="opc_payment_errors" class="error alert alert-danger" style="">
<b>Prosím zvolte platební metodu.</b></div>

 

может это баг вашей системы? :) или поменялись локаторы к элементу? ошибок селениума тут не видно.


  • 0



Темы с аналогичным тегами seenium, checkbox, webdriver, error

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных