d3unka
(d3unka)
#1
Столкнулся вот с таким предупреждением при выполнении теста
WARNING: You are using a Sizzle locator as a CSS Selector. Please use the Sizzle library directly via the JavascriptExecutor or a plain CSS selector.
Решени проблемы по ссылке
http://saucelabs.com/blog/index.php/2011/01/why-jquery-in-selenium-css-locators-is-the-way-to-go/
polusok
(Mykhailo Poliarush)
#2
вот еще одно решение с Sizzle
http://prototypic.net/blog/creating-a-sizzle-css-selector-handler-for-selenium2webdriver-in-java/
{syntaxhighlighter brush: java;fontsize: 100; first-line: 1; }import java.util.List;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverException;
import org.openqa.selenium.WebElement;
@SuppressWarnings(“unchecked”)
public class SizzleSelector {
private JavascriptExecutor driver;
public SizzleSelector(WebDriver webDriver) {
driver = (JavascriptExecutor)webDriver;
}
public WebElement findElementBySizzleCss(String using) {
injectSizzleIfNeeded();
String javascriptExpression = createSizzleSelectorExpression(using);
List<WebElement> elements = (List<WebElement>) driver.executeScript(javascriptExpression);
if (elements.size() > 0)
return elements.get(0);
return null;
}
public List<WebElement> findElementsBySizzleCss(String using) {
injectSizzleIfNeeded();
String javascriptExpression = createSizzleSelectorExpression(using);
return (List<WebElement>) driver.executeScript(javascriptExpression);
}
private String createSizzleSelectorExpression(String using) {
return "return Sizzle(\""+using+"\")";
}
private void injectSizzleIfNeeded() {
if (!sizzleLoaded())
injectSizzle();
}
public Boolean sizzleLoaded() {
Boolean loaded;
try {
loaded = (Boolean) driver.executeScript("return Sizzle()!=null");
} catch(WebDriverException e) {
loaded = false;
}
return loaded;
}
public void injectSizzle() {
driver.executeScript(" var headID = document.getElementsByTagName(\"head\")[0];"+
"var newScript = document.createElement('script');"+
"newScript.type = 'text/javascript';"+
"newScript.src = 'https://raw.github.com/jquery/sizzle/master/sizzle.js';"+
"headID.appendChild(newScript);");
}
}
{/syntaxhighlighter}
d3unka
(d3unka)
#3
Artem
(Artem)
#4
Вернемся к этой теме!
У меня не работат данный пример. Кто-нибудь может у себя его проверить?
Спасибо.
polusok
(Mykhailo Poliarush)
#5
что Вы пробовали и что у вас не работает?
какая ошибка возникает?
Artem
(Artem)
#6
Я копипастил пример, и пробывал работаетли он.
Ошибка вот такого рода: sizzle is not defined
http://selenium.polteq.com/en/injecting-the-sizzle-css-selector-library/ - полностью весь пример.
Работает только через JS (только выбор элемента), а вот как сделать через JS ввод текста так и не понял, если знаете где почитать - скиньте ссылку
polusok
(Mykhailo Poliarush)
#7
покажите код, как вы используете этот сизл локатор в вашем тесте
Artem
(Artem)
#8
Я использовал, все как по ссылке - так же. Создал два пакета (все как в примере)- хотел посмотреть, как работает.
И не работает.
polusok
(Mykhailo Poliarush)
#9
не знаю, что вы делали, но у меня просто скопированный текст работает
распишите в деталях ваши действия