Используя Selenium, чтобы установить флажок в меню, сделанном javascript - PullRequest
0 голосов
/ 08 июля 2019

Выполнение автоматизации тестирования с использованием Selenium и Java.

Существует страница, которая должна работать с IE (а не с Chrome).Я считаю, что это также использует Coldfusion.В любом случае, нажатие на стрелку вызывает меню флажков.Тем не менее, это меню не обычный HTML, а Java Script (см. Ниже).Это только часть функции javascript.

Мне нужно выбрать опцию.В принципе, прямого нет.Я печатаю исходный код страницы и пытаюсь выполнить (driver.findElements (By.xpath ("// input")), который возвращает 0 элементов. Поэтому я не совсем уверен, как выбрать поле.

Используя много манипуляций со строками, я могу найти индекс опции (ища многоточие; ") и сделать некоторые замены. Я могу открыть меню, но что теперь? Одна из предложенных вещей - сделать action.sendKeys (Keys.ARROWDOWN) в соответствии с положением опции в списке, но стрелка вниз, вместо того, чтобы перемещаться вниз по элементам списка, перемещает полосу прокрутки.

Кто-нибудь еще сталкивался с чем-то подобным или есть предложения? (Возможно,что-то с использованием javascript executor?)

<SCRIPT defer>

var strInnerHTML = '<div>';
strInnerHTML += '<form action="" onsubmit="return false;">';
strInnerHTML += '<span class="checkboxdropdown">';
strInnerHTML += '<input  type=\"checkbox\" id=\"_78\" name=\"cbusers\" 
value=\"78\"><label for=\"_78\" HIDEFOCUS=\"true\" style=\"white- 
space:nowrap; text-overflow:ellipsis;\">Option 1</label><br> 
<input  type=\"checkbox\" id=\"_90\" name=\"cbusers\" value=\"90\"><label 
for=\"_90\" HIDEFOCUS=\"true\" style=\"white-space:nowrap; text- 
overflow:ellipsis;\">Option 2</label><br><input  
type=\"checkbox\" id=\"_139\" name=\"cbusers\" value=\"139\"><label 
for=\"_139\" HIDEFOCUS=\"true\" style=\"white-space:nowrap; text- 
overflow:ellipsis;\">Option 3</label><br>

Ответы [ 2 ]

0 голосов
/ 12 июля 2019

По имени:

List<WebElement> checkbox = driver.findElements(By.name("cbusers"));
checkbox.get(0).click();

По cssSelector:

List<WebElement> checkbox = driver.findElements(By.cssSelector("input[type='checkbox']"));
checkbox.get(0).click();

По тэгу:

List<WebElement> checkbox = driver.findElements(By.tagName("label"));
checkbox.get(0).click();

С JavaScript:

WebElement checkbox = driver.findElement(By.name("cbusers"));
((JavascriptExecutor)driver).executeScript("arguments[0].click();", checkbox );
0 голосов
/ 12 июля 2019

В JavaScript у нас есть раздел библиотеки селена, называемый «до», поэтому, вероятно, что-то подобное есть в Java.

В JS:

(async ()=>{
    let element = driver.findElement({id: "example"});

    return await driver.wait(await until.elementIsVisible(element)).then(async ()=>{
        return await element.click();
    });    
})();

Если вы подождете, покаэлементы отображаются на странице до того, как вы начнете с ними взаимодействовать, возможно, вам повезет больше.

Извините, что я не смог помочь в Java, хотя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...