В Java varargs являются синтаксическим сахаром для создания массива при вызове метода. Например, эти два вызова эквивалентны:
void foo(String... args) { ... }
foo("hello", null, "world", xyz); // Java 1.5+
foo(new String[]{"hello", null, "world", xyz}); // All versions of Java
Varargs не делает ничего нового (по определению синтаксического сахара), но уменьшает верность и делает некоторые конструкции более приятными для реализации. Например, некоторые из моих любимых применений vararg включают в себя: PrintStream.printf()
, String.format()
, Method.invoke()
.
Другие хорошие применения varargs:
// This one is in the Java standard library
Collections: void addAll(Collection super T> c, T... elements);
// Custom examples
int max(int... nums);
void doOperation(File x, String y, SomeEnum options...);
Кроме того, varargs Java доводят язык до четности с поддержкой vararg на языках C, Python, JavaScript и других языках. Поэтому, если часто повторяющийся дизайн (например, max()
) лучше всего работает с varargs, Java больше не является нечетным языком, требующим более уродливой реализации.
Страница не загрузилась правильно при нажатии на нее. Проверьте на различные элементы на странице, чтобы быть уверенными, что страница загрузилась.
кроме того, ожидайте ссылки, чтобы появиться и быть видимыми перед нажатием на нее.
Удостоверьтесь, что Вы увеличиваете тайм-аут в корректном месте. Строки, которые Вы отправили:
selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);
Это ожидание состоит в том, чтобы страница загрузилась, который возвращается После щелчка. Но проблема, которую Вы описываете, состоит в том, что это перестало работать при попытке сделать щелчок. Так, удостоверьтесь, что увеличили ожидание Перед этим.
selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);
// do something, then navigate to a different page
// (window focus is never changed in-between)
// after the last click in these steps:
selenium.waitForPageToLoad(60000);
// anything else that happened after that
selenium.click("link=mylink");
selenium.waitForPageToLoad(60000);
Я сделал селен некоторое время, и я действительно разработал неприязнь к waitForPageToLoad (). Вы могли бы полагать всегда просто, что ожидание рассматриваемого элемента существовало.
я нахожу, что этот метод, кажется, решает самые странные вопросы, с которыми я сталкиваюсь как это. Другая возможность состоит в том, что у Вас может быть некоторый JavaScript, препятствующий тому, чтобы ссылка делала что-либо, при нажатии в первый раз. Это кажется маловероятным, но стоящим перепроверки.
Иногда, на первый взгляд случайно, Selenium просто не любит щелкать определенные теги привязки. Не знаю, чем это вызвано, но бывает. В этих случаях я нахожу проблемную ссылку вместо выполнения
selenium.click(...)
do
selenium.fireEvent( locator, 'click' );
. Как уже отмечалось выше, у меня были проблемы с тегами привязки, которые выглядят следующим образом:
<a href="javascript:...." >
То, что вы описываете, является менее общей версией функции раздела .
Алгоритмы уже данные, смехотвочно сложны, вот проще один (в псевдо-коде, я оставлю его для перевода на Java :)
)
p(min, n):
if min > n: return 0
if min = n: return 1
return p(min+1, n) + p(min, n-min)
-121--3375285- Я просто попробовал WebDriver (Selenium 2.0) и обнаружил, что работает Weafelement # SendKeys (Keys.enter).
Попробуйте следующее:
selenium.fireEvent(ID, "keypress");
selenium.click("link=Continue to this website (not recommended).");
Thread.sleep(5000);