Экран не перемещается, даже если метод click() успешно выполняется в мобильном веб-приложении с использованием веб-драйвера selenium

Я пытался нажать кнопку в своем мобильном веб-приложении, используя веб-драйвер selenium. Кнопка находится, текст над кнопкой может быть получен, и даже событие клика работает хорошо. Но навигации не происходит.

Я пробовал с помощью метода Click(), метода sendKeys(), а также с исполнителем скрипта. Но не смог обработать дальше.

КОД:

public class TestWeb
{  

    WebDriver driver; 

    private Selenium selenium;   

    @Before
    public void setUp() throws Exception {
      driver = new IPhoneDriver();
      driver.get("http://10.5.95.25/mobilebanking");       
    }

    @Test
    public void TC() throws Exception  { 
        System.out.println("page 1");
        Thread.sleep(5000);
        WebElement editbtn1 = driver.findElement(By.id("ext-comp-1018"));
        String s1 = editbtn1.getText();
        System.out.println(s1);
        editbtn1.click();
        editbtn1.sendKeys(Keys.ENTER);
        ((JavascriptExecutor)driver).executeScript("arguments[0].click;", editbtn1); 

        System.out.println("ok");
    }

@After
    public void tearDown() throws Exception {
         System.out.println("*******Execution Over***********");
    }
}

Я пробовал щелкать, sendKeys и ScriptExecutor по отдельности, а также комбинировать. Он выполняется без ошибок, но навигация не происходит.

Кто-нибудь может помочь мне с другими способами выполнить функцию нажатия на кнопку?


Баран


person ARN    schedule 05.07.2012    source источник
comment
Элемент с id="ext-comp-1018" является элементом input или любым другим элементом с некоторой связанной функцией onclick?   -  person Petr Janeček    schedule 05.07.2012
comment
‹div id=ext-comp-1018 class=x-button x-button-action›‹span class=x-button-label id=ext-gen1045›Login‹/span›‹/div› Это фактический код для конкретная кнопка   -  person ARN    schedule 05.07.2012
comment
Что произойдет, если вы попытаетесь щелкнуть базовый элемент span? Я знаю, что WebDriver по умолчанию щелкает центр элемента, поэтому щелчок по div должен работать, но... иногда в мире HTML, JS, различных веб-фреймворков, WebDriver происходят странные вещи. , разные браузеры, разные ОС...   -  person Petr Janeček    schedule 05.07.2012


Ответы (1)


Возможно, это не ваша проблема, но я заметил «ext-comp-» и предполагаю, что вы используете extjs.

Я использую GXT, и хотя поиск по идентификатору работал во многих случаях, на некоторых кнопках отправки это не срабатывало.

Мне пришлось использовать firebug в firefox, чтобы найти элемент и скопировать xpath. Затем я мог бы щелкнуть элемент по

driver.findElement(By.xpath("//div[@id='LOGIN_SUBMIT']/div/table/tbody/tr[2]/td[2]/div/div/table/tbody/tr/td/div")).click();  // worked

У меня он тоже молча терпел неудачу. Моя кнопка отправки имеет идентификатор LOGIN_SUBMIT, поэтому я не знаю, почему следующее не удалось, но ....

driver.findElement(By.id("LOGIN_SUBMIT")).click();//failed  

Редактировать:

Вот точный пример (случай 1 из 2):

WebDriverWait wait = new WebDriverWait(driver, 30);
    wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@id='gwt-debug-LOGIN_SUBMIT']")));
    //wait.until(ExpectedConditions.elementToBeClickable((By.id("gwt-debug-LOGIN_SUBMIT"))));  <!-- id works as well

Итак, элемент найден. Это истечет время ожидания и выдаст исключение, если это не так.

Тем не менее, следующее терпит неудачу (под firefox, работает с chrome) без ошибок, и страница не перемещается.

driver.findElement(By.xpath("//div[@id='gwt-debug-LOGIN_SUBMIT']")).click();
//driver.findElement(By.id("gwt-debug-LOGIN_SUBMIT")).click(); <-- fails too 

Что я должен сделать, так это:

driver.findElement(By.xpath("//div[@id='gwt-debug-LOGIN_SUBMIT']/div/table/tbody/tr[2]/td[2]/div/div/table/tbody/tr/td/div")).click();

Таким образом, мой опыт заключался в том, что даже если я нашел элемент с помощью xpath, щелчок не удался, если я не использовал полный xpath.

Вот еще один точный пример (случай 2 из 2):

Я могу найти такой элемент:

WebElement we = driver.findElement(By.xpath("//*[@id=\"text" + i + "\"]"));

Я знаю, что нашел его, потому что я вижу текст через:

 we.getText();

Все еще выбирая путь, который я обнаружил, он терпит неудачу.

//get outta town man the following fails
driver.findElement(By.xpath("//*[@id=\"text" + i + "\"]")).click();

В этом случае нет более явного xpath, чтобы попробовать, как в случае 1. Мне нужно было использовать css:

//bingo baby works fine
driver.findElement(By.cssSelector("div#text" + i + ".myChoices")).click();

На самом деле, я получил путь css через firebug, чем сократил его.

//this is what I recieved
html.ext-strict body.ext-gecko div#x-auto-0.x-component div#x-auto-1.x-component div#x-auto-3..myBlank div#choicePanel1.myBlank div.x-box-inner div#text3.myChoices  //text3 is the id of the element I wanted to select

Сможете ли вы определить нужные вам селекторы xpath и css, я не знаю, но я думаю, что испытал именно то, что вы сделали.

person user1258245    schedule 05.07.2012
comment
Я использовал xPath, className и ID, чтобы найти элемент и щелкнуть его. Никакого сообщения об ошибке не было отображено ни для одной вещи. Казнь прошла успешно. Он находит элемент, но проблема в том, что он не выполняет навигацию при выполнении события click. - person ARN; 05.07.2012
comment
Вы на Android? Если да, смотрели ли вы вывод adb logcat ()? Там может быть что-то, что вы можете увидеть там. У меня такое было с локальной базой данных. Тест junit не сказал мне, почему он остановился, но logcat показал ошибки, характерные для браузера Android, при запуске через apk. - person user1258245; 05.07.2012
comment
@Koormathi Вы говорите, что казнь прошла успешно, но я не верю, что это так. Возможно, это должно было быть успешным, но не то, что я испытал. Я думаю, что вы нашли элемент и щелкнули по нему, но он никогда не щелкался, и что если вы найдете элемент другим способом, щелчок может быть успешным. Во всяком случае, это то, что я нашел в своих тестах. - person user1258245; 06.07.2012