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

Фотография

Selenium для начинающих


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

#181 shadow from omsk

shadow from omsk

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

  • Members
  • Pip
  • 42 сообщений
  • ФИО:Зиновьев Александр
  • Город:Омск

Отправлено 02 апреля 2012 - 06:43

У меня проблема с запуском драйвера Хром в Яве. Вся печаль в том, что работал раньше только с Selenium IDE, а теперь пытаюсь освоить WebDriver, Яву знаю плоховато :( Нашел в нете пример запуска драйвера, но он у меня не стартует. Драйвер выкачал (который исполняемый файл, он лежит в том же каталоге). Никаких ошибок не показывает. Если меняем в коде вызов Хрома на Firefox, все прекрасно работает. Из чего делаю вывод, что либо драйвер криво подключаю, либо у меня ошибка в ДНК :) Собственно сам код:

import java.io.File;
import java.io.IOException;

import junit.framework.TestCase;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriverService;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;

@RunWith(BlockJUnit4ClassRunner.class)
public class ChromeTest extends TestCase {

  private static ChromeDriverService service;
  private WebDriver driver;

  @BeforeClass
  public static void createAndStartService() throws IOException {
    service = new ChromeDriverService.Builder()
        .usingChromeDriverExecutable(new File("chromedriver"))
        .usingAnyFreePort()
        .build();
    service.start();
  }

  @AfterClass
  public static void createAndStopService() {
    service.stop();
  }

  @Before
  public void createDriver() {
    driver = new RemoteWebDriver(service.getUrl(),
        DesiredCapabilities.chrome());
  }

  @After
  public void quitDriver() {
    driver.quit();
  }

  @Test
  public void testGoogleSearch() {
    driver.get("http://www.google.com");
    WebElement searchBox = driver.findElement(By.name("q"));
    searchBox.sendKeys("webdriver");
    ((WebDriver) searchBox).quit();
    assertEquals("webdriver - Google Search", driver.getTitle());
  }
}

Использую Убунту 10.04 и Эклипс. Буду рад, если направите.
  • 0

#182 degradator

degradator

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

  • Members
  • Pip
  • 59 сообщений
  • ФИО:смиромсерг

Отправлено 02 апреля 2012 - 13:03

Та же самая беда, мне только нужно HtmlUnit подключить. Он в добавок все время ругается на css, не знаю что делать, подскажите пожалуйста как можно реализовать эту беду с консольным браузером (любым). Selenium из консольных только htmlUnit помойму поддерживает, но может можно че-то другое с поддержкой css подключить? Если да, то как? Код сверху моего поста почти такой же как и мой.
  • 0
Мой сайт - Травиан бот :)

#183 shadow from omsk

shadow from omsk

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

  • Members
  • Pip
  • 42 сообщений
  • ФИО:Зиновьев Александр
  • Город:Омск

Отправлено 03 апреля 2012 - 04:08

хо-хо! Победил таки, как и думал, была проблема в ДНК :) Неправильно указал путь к chromedriver. Указание относительного пути (./chromedriver) почему то не проходит. Пришлось прописать полный путь от /home/...путь к драйверу..../chromedriver и все запустилось. Продолжаю изучение.
  • 1

#184 shadow from omsk

shadow from omsk

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

  • Members
  • Pip
  • 42 сообщений
  • ФИО:Зиновьев Александр
  • Город:Омск

Отправлено 03 апреля 2012 - 10:08

Кто использовал режим работы IPhoneDriver?

Простая форма авторизации, 2 инпута, username и password, авторизовываемся, после чего открываем форму выхода.
код:

import static org.junit.Assert.fail;

import java.util.concurrent.TimeUnit;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.iphone.IPhoneDriver;

public class Login {
	private WebDriver driver;
	private String baseUrl;
	private StringBuffer verificationErrors = new StringBuffer();
	@Before
	public void setUp() throws Exception {
		driver = new FirefoxDriver();
//		driver = new ChromeDriver();
//		driver = new IPhoneDriver();
		baseUrl = "http://-----my site----";
		driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
	}

	@Test
	public void testUntitled() throws Exception {
		driver.get(baseUrl + "/login");
		driver.findElement(By.id("username")).clear();
		driver.findElement(By.id("username")).sendKeys("user");
		driver.findElement(By.id("password")).clear();
		driver.findElement(By.id("password")).sendKeys("user");
		driver.findElement(By.cssSelector("input.ui-btn-hidden")).click();
		driver.get(baseUrl + "/frontoffice/logout");
	}

	@After
	public void tearDown() throws Exception {
		driver.quit();
		String verificationErrorString = verificationErrors.toString();
		if (!"".equals(verificationErrorString)) {
			fail(verificationErrorString);
		}
	}

	@SuppressWarnings("unused")
	private boolean isElementPresent(final By by) {
		try {
			driver.findElement(by);
			return true;
		} catch (NoSuchElementException e) {
			return false;
		}
	}
}



Если использовать режим driver = new IPhoneDriver(); для эмуляции запуска браузера для iPhone получаю ошибку:

org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
Build info: version: '2.20.0', revision: '16008', time: '2012-02-27 19:03:04'
System info: os.name: 'Linux', os.arch: 'i386', os.version: '2.6.32-40-generic-pae', java.version: '1.6.0_26'
Driver info: driver.version: IPhoneDriver
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:435)
	at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:139)
	at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:94)
	at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:102)
	at org.openqa.selenium.iphone.IPhoneDriver.<init>(IPhoneDriver.java:76)
	at org.openqa.selenium.iphone.IPhoneDriver.<init>(IPhoneDriver.java:87)
	at org.openqa.selenium.iphone.IPhoneDriver.<init>(IPhoneDriver.java:96)
	at Login.setUp(Login.java:25)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.apache.http.conn.HttpHostConnectException: Connection to http://localhost:3001 refused
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:158)
	at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
	at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
	at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:573)
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:425)
	at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
	at org.openqa.selenium.remote.HttpCommandExecutor.fallBackExecute(HttpCommandExecutor.java:304)
	at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:283)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:415)
	... 31 more
Caused by: java.net.ConnectException: Connection refused
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
	at java.net.Socket.connect(Socket.java:529)
	at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:123)
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:148)
	... 39 more

java.lang.NullPointerException
	at Login.tearDown(Login.java:50)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:36)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)



Если же driver = new FirefoxDriver(); Все хорошо, работает четко. Если поставить driver = new ChromeDriver();

java.lang.IllegalStateException: The path to the chromedriver executable must be set by the webdriver.chrome.driver system property; for more information, see http://code.google.com/p/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://code.google.com/p/chromedriver/downloads/list
	at com.google.common.base.Preconditions.checkState(Preconditions.java:172)
	at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:103)
	at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:86)
	at Login.setUp(Login.java:24)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

java.lang.NullPointerException
	at Login.tearDown(Login.java:50)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:36)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)



Сорри, за большое количество кода, стараюсь привести больше инфы, ибо правильный вопрос содержит часть ответа. Не могу понять, мне для использования других типов браузера необходимо что то еще? т.е. как писал выше подключать браузер Хром? А как быть с Safari?
  • 1

#185 Carnage

Carnage

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

  • Members
  • Pip
  • 29 сообщений
  • ФИО:Тимофей

Отправлено 04 апреля 2012 - 08:15

Спасибо за инфу. Возможно в будущем пригодится.
  • 0

#186 Leoxa

Leoxa

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

  • Members
  • Pip
  • 59 сообщений
  • ФИО:Алексей

Отправлено 04 апреля 2012 - 10:55

Если же driver = new FirefoxDriver(); Все хорошо, работает четко. Если поставить driver = new ChromeDriver();

java.lang.IllegalStateException: The path to the chromedriver executable must be set by the webdriver.chrome.driver system property; for more information, see http://code.google.com/p/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://code.google.com/p/chromedriver/downloads/list
	


Сорри, за большое количество кода, стараюсь привести больше инфы, ибо правильный вопрос содержит часть ответа. Не могу понять, мне для использования других типов браузера необходимо что то еще? т.е. как писал выше подключать браузер Хром? А как быть с Safari?


ну у вас же конкретно ругается, и даже ссылки есть. :) надо скачать ChromeDriver под вашу систему и настроить пути, чтобы система его находила.

насчет IPhoneDriver и Safari не подскажу. с первым просто не сталкивался, а со вторым удачного опыта пока не было. :(
  • 0

#187 shadow from omsk

shadow from omsk

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

  • Members
  • Pip
  • 42 сообщений
  • ФИО:Зиновьев Александр
  • Город:Омск

Отправлено 05 апреля 2012 - 03:12

Я его скачал :) причем он лежит рядом, в системе подключен. Проблема в том, что судя по всему, его нужно подключать явно, указывая путь к драйверу, как сделал в посте: http://software-test...ost__p__103291. А вот что бы оно автоматом подхватывало не получается.
  • 0

#188 Leoxa

Leoxa

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

  • Members
  • Pip
  • 59 сообщений
  • ФИО:Алексей

Отправлено 05 апреля 2012 - 14:23

Я его скачал :) причем он лежит рядом, в системе подключен. Проблема в том, что судя по всему, его нужно подключать явно, указывая путь к драйверу, как сделал в посте: http://software-test...ost__p__103291. А вот что бы оно автоматом подхватывало не получается.


вероятно система должна его находить, для этого надо настроить переменную PATH.
  • 0

#189 Vika77

Vika77

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

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Вика

Отправлено 13 апреля 2012 - 19:56

Доброго времени суток. Помогите пожалуйста с проблемой. В Selenium IDE пытаюсь автоматизировать сбор данных. Но никак не могу подобрать локатор для одной из ссылок, чтобы сохранить ее в переменную и после открыть в этом же окне.
Исходный код ссылки:
<a target="_blank" title="Click here to see SMS Admin tool" href="https://cайт/fivecou...JFZFHORFKAJSA">
<font size="-2" face="Verdana, Arial, Helvetica, sans-serif" color="#cedfd5">
<b>SMS Admin</b>
</font>
</a>
В селениуме пытаюсь подобрать локатор следующим образом:
<tr>
<td>storeAttribute</td>
<td>xpath=//a[contains(text(),'SMS Admin')]</td>
<td>linksms</td>
</tr>
<tr>
<td>open</td>
<td>${linksms}</td>
<td></td>
</tr>
Но по нажатию на файнд ссылка не находится.
Я что-то не так делаю? Прошу прощения, если это глупый вопрос, но я только начинаю разбираться :blush:
  • 0

#190 shadow from omsk

shadow from omsk

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

  • Members
  • Pip
  • 42 сообщений
  • ФИО:Зиновьев Александр
  • Город:Омск

Отправлено 16 апреля 2012 - 04:02

Проще всего подбирать xPath в качестве локатора, если одновременно в том же Firefox запустить selenium IDE и Firebug, при активном Firebug, кликнуть на элемент, затем в поле где отображается документ в виде готового HTML на элементе щелкни правой клавишей и в контекстном меню выбери пункт "Копировать xPath". Будет скопирован полный xPath до этого элемента, который может быть подхвачен Селениумом. Если не понятно выразился, могу сделать скриншот.
  • 0

#191 Vika77

Vika77

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

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Вика

Отправлено 16 апреля 2012 - 12:02

Проще всего подбирать xPath в качестве локатора, если одновременно в том же Firefox запустить selenium IDE и Firebug, при активном Firebug, кликнуть на элемент, затем в поле где отображается документ в виде готового HTML на элементе щелкни правой клавишей и в контекстном меню выбери пункт "Копировать xPath". Будет скопирован полный xPath до этого элемента, который может быть подхвачен Селениумом. Если не понятно выразился, могу сделать скриншот.


попробовала с xpath. По нажатию на find - элемент находится по xpath, но при выполнении на:
<tr>
<td>storeAttribute</td>
<td>xpath=//x:html/x:body/x:table/x:tbody/x:tr[1]/x:td[1]/x:table/x:tbody/x:tr[3]/x:td/x:table/x:tbody/x:tr[20]/x:td[2]/x:a/x:font/x:b</td>
<td>linksms</td>
</tr>

вылетает ошибка:
[error] Invalid xpath [2]: //x:html/x:body/x:table/x:tbody/x:tr[1]/x:td[1]/x:table/x:tbody/x:tr[3]/x:td/x:table/x:tbody/x:tr[20]/x:td[2]/x:a/x:font/x:

Меня смущает то, что в ошибке в xpath отсутствует последний символ...
  • 0

#192 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 897 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 16 апреля 2012 - 12:14

[error] Invalid xpath [2]: //x:html/x:body/x:table/x:tbody/x:tr[1]/x:td[1]/x:table/x:tbody/x:tr[3]/x:td/x:table/x:tbody/x:tr[20]/x:td[2]/x:a/x:font/x:

Меня смущает то, что в ошибке в xpath отсутствует последний символ...

убирай "x:"
Ты имхо используешь View Xpath ))
  • 0

#193 b462063

b462063

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

  • Members
  • Pip
  • 3 сообщений
  • Город:Москва

Отправлено 16 апреля 2012 - 17:26

UI-Element is now fully integrated with Selenium. The only additional file that needs to be specified is your map definitions file. In the IDE, add it to the comma-delimited Selenium Core extensions field of the IDE options. A sample definition file created for the website alistapart.com is included in the distribution and is available here:

chrome://selenium-ide/content/selenium/scripts/ui-map-sample.js

...

To see rollup rules in action in the IDE, use the included sample map with UI-Element (see instructions above in the "Including the Right Files" section), and grab the listing of 4 commands from the "Getting Motivated" section, above. Under the Source tab of the IDE, paste the commands in between the <tbody> and </tbody> tags. Now switch back to the Table tab, and click the new purple spiral button; this is the "Apply rollup rules" button. If done correctly, you should be prompted when rollup rule matches are found. Go ahead - go to the alistapart.com site and try executing the rollups!



Я так и сделал, но кнопка Apply rollup rules неактивна, соответственно, при запуске на alistapart.com получаю:

[error] Element ui=allPages::section(section=topics) not found


Что делать и кто виноват?
Спасибо.
  • 0

#194 Vika77

Vika77

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

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Вика

Отправлено 16 апреля 2012 - 17:33



[error] Invalid xpath [2]: //x:html/x:body/x:table/x:tbody/x:tr[1]/x:td[1]/x:table/x:tbody/x:tr[3]/x:td/x:table/x:tbody/x:tr[20]/x:td[2]/x:a/x:font/x:

Меня смущает то, что в ошибке в xpath отсутствует последний символ...

убирай "x:"
Ты имхо используешь View Xpath ))


именно его :blush: Спасибо, помогло! Но вот еще какая странность, после выполнения этих шагов:
<tr>
<td>storeAttribute</td>
<td>xpath=//html/body/table/tbody/tr[1]/td[1]/table/tbody/tr[3]/td/table/tbody/tr[20]/td[2]/a/font/b</td>
<td>linksms</td>
</tr>
<tr>
<td>open</td>
<td>${linksms}</td>
<td></td>
</tr>
в браузере ошибка, т.к. там пытается открыться сайт https://m.mobilecu.org/${Blinksms}

Я что-то опять не так делаю?
И еще, на сколько я понимаю суть xpath, он мне не совсем подходит, т.к. на разных сайтах (это админки банков) искомая ссылка может иметь различную позицию на сайте. Поэтому я и пыталась использовать конструкцию xpath=//a[contains(text(),'SMS Admin')]
  • 0

#195 shadow from omsk

shadow from omsk

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

  • Members
  • Pip
  • 42 сообщений
  • ФИО:Зиновьев Александр
  • Город:Омск

Отправлено 25 апреля 2012 - 03:31

Всем привет! Подскажите пожалуйста по ChromeDriver:

1) при запуске простого теста на аутентификацию, выдает ошибки в консоль:

[3613:3613:8111797260:ERROR:gl_surface_glx.cc(65)] GLX 1.3 or later is required.
[3613:3613:8111825746:ERROR:gl_surface_linux.cc(64)] GLSurfaceGLX::InitializeOneOff failed.

Тест проходит, но ошибки меня настораживают.


2) Как правильно переназначить путь для log-файла драйвера? По умолчанию он его складывает в корень проекта, что не совсем гуд. Где про это прочитать. Гуглить пробовал, но вероятно неверно формулировал запрос и ничего путного не нашел.
  • 0

#196 psihozik

psihozik

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

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

Отправлено 25 апреля 2012 - 07:44




[error] Invalid xpath [2]: //x:html/x:body/x:table/x:tbody/x:tr[1]/x:td[1]/x:table/x:tbody/x:tr[3]/x:td/x:table/x:tbody/x:tr[20]/x:td[2]/x:a/x:font/x:

Меня смущает то, что в ошибке в xpath отсутствует последний символ...

убирай "x:"
Ты имхо используешь View Xpath ))


именно его :blush: Спасибо, помогло! Но вот еще какая странность, после выполнения этих шагов:
<tr>
<td>storeAttribute</td>
<td>xpath=//html/body/table/tbody/tr[1]/td[1]/table/tbody/tr[3]/td/table/tbody/tr[20]/td[2]/a/font/b</td>
<td>linksms</td>
</tr>
<tr>
<td>open</td>
<td>${linksms}</td>
<td></td>
</tr>
в браузере ошибка, т.к. там пытается открыться сайт https://m.mobilecu.org/${Blinksms}

Я что-то опять не так делаю?
И еще, на сколько я понимаю суть xpath, он мне не совсем подходит, т.к. на разных сайтах (это админки банков) искомая ссылка может иметь различную позицию на сайте. Поэтому я и пыталась использовать конструкцию xpath=//a[contains(text(),'SMS Admin')]


А что вы хотите сохранить командой storeAttribute ? Если ссылку то делать надо так:

storeAttribute | //a[contains(text(),'SMS Admin')]@href | linksms

Так же в ссылке (https://m.mobilecu.org/${Blinksms}) у вас опечатка или что ? По моему должно быть https://m.mobilecu.org/${linksms}
  • 0

#197 shadow from omsk

shadow from omsk

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

  • Members
  • Pip
  • 42 сообщений
  • ФИО:Зиновьев Александр
  • Город:Омск

Отправлено 26 апреля 2012 - 08:41

Если не секрет, подскажите, как отключить у селениума запуск графической оболочки (т.е. что бы все только в консоль сыпал) при прохождении теста?
  • 0

#198 shadow from omsk

shadow from omsk

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

  • Members
  • Pip
  • 42 сообщений
  • ФИО:Зиновьев Александр
  • Город:Омск

Отправлено 27 апреля 2012 - 08:34

про запуск без графической оболочки удалось нагуглить пока только такой вариант: http://www.alittlema...enium-headless/


У кого нить есть еще предложения?
  • 0

#199 shadow from omsk

shadow from omsk

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

  • Members
  • Pip
  • 42 сообщений
  • ФИО:Зиновьев Александр
  • Город:Омск

Отправлено 02 мая 2012 - 07:16

Всем привет! Подскажите пожалуйста по ChromeDriver:

2) Как правильно переназначить путь для log-файла драйвера? По умолчанию он его складывает в корень проекта, что не совсем гуд. Где про это прочитать. Гуглить пробовал, но вероятно неверно формулировал запрос и ничего путного не нашел.


отвечу сам себе:

при создании окружения для драйвера браузера Chrome, указываем пути:

@BeforeClass
  public static void createAndStartService() throws IOException {
	  service = new ChromeDriverService.Builder()
      .usingChromeDriverExecutable(new File("lib/chromedriver"))  // тут лежит драйвер
      .usingAnyFreePort().withLogFile(new File("logs/chromedriver.log")) // а тут будет наш файл логов. 
      .build();
    service.start();
  }

в параметрах запуска указываем:

@Before
  public void createDriver() {
	  DesiredCapabilities capabilities = DesiredCapabilities.chrome(); 
	  driver = new RemoteWebDriver(service.getUrl(),capabilities);
      baseUrl = "http:mysite.com";
  }


Работает только в версией Selenium-java-2.21.0 и выше, у версии 2.20.0 метод withLogFile не существует.

Огромное спасибо Алексею Алексееву за консультации!
  • 0

#200 Dmitry.Praskovin

Dmitry.Praskovin

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

  • Members
  • Pip
  • 2 сообщений
  • ФИО:Прасковьин Дмитрий Владимирович


Отправлено 09 июля 2013 - 09:58

Всем привет.
Помогите плиз.
Использую SeleniumIDE.
Есть pop-up внутри iframe. Пытаюсь напечать в него текст. Текст добавляется без проблем, следующая команда проходит, а потом прохождение теста обрывается в логе такое:
isNewPageLoaded found an old pageLoadError: TypeError: can't access dead object
[warn] Stack is: BrowserBot.prototype._handleClosedSubFrame@chrome://selenium-ide/content/selenium-core/scripts/selenium-browserbot.js:1246 BrowserBot.prototype.getCurrentWindow@chrome://selenium-ide/content/selenium-core/scripts/selenium-browserbot.js:1224 BrowserBot.prototype.pollForLoad@chrome://selenium-ide/content/selenium-core/scripts/selenium-browserbot.js:956 BrowserBot.prototype.reschedulePoller/pollerFunction@chrome://selenium-ide/content/selenium-core/scripts/selenium-browserbot.js:1094 BrowserBot.prototype.runScheduledPollers@chrome://selenium-ide/content/selenium-core/scripts/selenium-browserbot.js:1104 TestLoop.prototype.continueTestWhenConditionIsTrue@chrome://selenium-ide/content/selenium-core/scripts/selenium-executionloop.js:138 .continueTestWhenConditionIsTrue@chrome://selenium-ide/content/selenium-runner.js:133 retval@chrome://selenium-ide/content/selenium-core/scripts/htmlutils.js:60
[error] can't access dead object

Нагуглил такой воркэраунд
<tr>
<td>runScript</td>
<td>this.browserbot.pageLoadError=null</td>
<td>//reset the pageLoadError that Admin fired.</td>
</tr>
не помогает.
Что можно сделать чтобы тест не останавливался?

З.Ы. Опытным путем выяснил, что проблема именно в type. Пробовал менять на typeAndWait и кучу всего
  • 0


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

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