Python Selenium - замена значения location ['x'] внутри итерации с последующим щелчком () - PullRequest
0 голосов
/ 12 октября 2019

, чтобы автоматизировать некоторые задачи в браузере с помощью Selenium, мне нужно идентифицировать определенное поле на веб-сайте и щелкнуть его. Поскольку значения, которые я использую для определения правильного поля, могут отображаться несколько раз, я перебираю результаты, включая несколько условий. Возможно, код написан неэффективно, но условия - с целью определения правильных координат x и y - работают. Я хотел бы знать, могу ли я каким-либо образом изменить значение location ['x'], чтобы выполнить команду click.

        #  finding the X Value
        tempmatchesx = driver.find_elements_by_xpath("//*[text()='" + tempoa + "']")
        tempmatchesxVal =''

        if indicator == '1':
            for i in tempmatchesx:
                if (i.location['x'] >= temptype['x']) and (i.location['y'] >= temptype['y']) and (i.location['x'] < temptypeoppo['x']):
                    tempmatchesxVal = i.location['x'] 
                    break
        elif indicator == '2':
            for i in tempmatchesx:
                if (i.location['x'] >= temptype['x']) and (i.location['y'] >= temptype['y']) and (i.location['x'] > temptypeoppo['x']):
                    tempmatchesxVal = i.location['x']  
                    break

        # finding the Y Value
        tempmatchesy = driver.find_elements_by_xpath("//*[text()='" + tempgoals + "']")
        tempmatchesyVal =''

        if indicator == '1':
            for i in tempmatchesy:
                if (i.location['x'] >= temptype['x']) and (i.location['y'] >= temptype['y']) and (i.location['x'] < temptypeoppo['x']):
                    i.location['x'] = tempmatchesxVal
                    i.click()

                    break
        elif indicator == '2':
            for i in tempmatchesy:
                if (i.location['x'] >= temptype['x']) and (i.location['y'] >= temptype['y']) and (i.location['x'] > temptypeoppo['x']):
                    i.location['x'] = tempmatchesxVal
                    i.click()

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

i.location['x'] = tempmatchesxVal i.click()

Можно ли как-то заменить значение location-X на ранее определенное значение x (tempmatchesxVal)? Или может, как я это сделал, и ошибка (без кода ошибки) может быть где-то еще? На данный момент ни один элемент не нажимается.

Обновление:

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

Два «find_elements_by_xpath» выполняются с разными входами - первый - tempoa для идентификации столбца (значение x), а второй tempgoals для строки (y-значение).

Очевидно, я не могу изменить i.location [координата] - как я могу затем щелкнуть этот элемент?

Ответы [ 2 ]

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

Я решил это самостоятельно. Вместо первоначальной идеи изменения координат (благодаря ответам - так что это невозможно) я реализовал дополнительное условие:

for i in tempOdds:
if (i.location['y'] == tempmatchesyVal) and (i.location['x'] >= tempmatchesxVal):

Таким образом, в основном разрешены только элементы с одинаковыми координатами x и y /х может быть больше, но первый выбранный является правильным

0 голосов
/ 13 октября 2019

Мне не совсем ясно, каковы ваши условия и какова цель этого кода, но то, что кажется очень неправильным, - это присвоение нового значения i.location [что-то]. i являются HTML-элементами, вы можете узнать их местоположение, но я не думаю, что их установка работает.

Обновление: местоположение элемента - это местоположение в пикселях в левом верхнем углу страницы. Вы упоминаете столбцы и строки: если на странице есть какая-то таблица, я сомневаюсь, что i.location поможет вам определить столбцы и строки, которые вы ищете. Если вам нравится работать со смещением пикселей, вы можете проверить action_chains для перемещения мыши и щелчка. https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.action_chains.html

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