Как найти веб-элемент внутри веб-элемента или динамически найти дочерний элемент из родительского элемента (например, элемент поиска в регионе)? - PullRequest
0 голосов
/ 16 октября 2019
Imagine a kanban board UI

to do | inprogress | done
task1   task1       task1
task2   task2       task2
task3   task3       task3
task4   task4       task4
task5   task5       task5

DOM of kanban board:
//--Start--
<iframe id = 'ardafder2312'>
    <div class = 'container'>
        <div class = 'todo'>
            <div class = 'card-title' text='task1'>
            <div class = 'card-title' text='task2'>
            <div class = 'card-title' text='task3'>
            <div class = 'card-title' text='task4'>
            <div class = 'card-title' text='task5'>
        </div>  
        <div class = 'inprogress'>
            <div class = 'card-title' text='task1'>
            <div class = 'card-title' text='task2'>
            <div class = 'card-title' text='task3'>
            <div class = 'card-title' text='task4'>
            <div class = 'card-title' text='task5'>
        </div>  
        <div class = 'done'>
            <div class = 'card-title' text='task1'>
            <div class = 'card-title' text='task2'>
            <div class = 'card-title' text='task3'>
            <div class = 'card-title' text='task4'>
            <div class = 'card-title' text='task5'>
        </div>  
</iframe>

//--End--

// Ниже работает фрагмент

switchto(iframe)
WebElement container = driver.findelement(by_xpath("//*[contains(@class,'container')]//*[contains(@class,'todo')]//*[text(),'task1']").click()); 

Требуется нажмите на «task5» под столбцом «done», используя динамическую функцию , и я собираюсь это сделатьиспользуя поиск концепции в регионе от Sikuli. Найдите родителя и найдите в нем ребенка.

Поэтому ниже была создана функция, в которой мы определяем родительский веб-элемент и ищем дочерний веб-элемент внутри него.

Пожалуйста, дайте мне знать, если это работает или какие-либо изменения должны быть сделаны.

function test(String state, String taskName)
{
    WebElement container = driver.findelement(by_xpath("//*[contains(@class,'container')]//*[contains(@class,'"+state+"')]")); //trying to create a region - parent
    WebElement task = container.findelement(by_xpath("//*[text(),'task1']"))  //trying to search within the container - child of above parent
}

test("done", "task1")

Результат:

Ожидаемый результат: Пользовательдолжен щелкнуть «задача1», доступная в столбце «сделано»

Фактический результат (ВЫПУСК): щелчок происходит по «задаче 1», доступной в столбце «задача».

1 Ответ

1 голос
/ 16 октября 2019

Изменение

WebElement task = container.findelement(by_xpath("//*[text(),'task1']"))

на

WebElement task = container.findelement(by_xpath(".//*[text(),'task1']"))

. будет означать, что вы начинаете с текущего узла

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