нажатие на элемент в селене не работает - PullRequest
0 голосов
/ 29 марта 2020

Помоги мне. Я сделал программу, одним из действий которой является нажатие на кнопку проверки на сайте gamdom.com. Дело в том, что у меня это работает и все нажимается. Но у друга, которому я бросил эту программу, эта кнопка не приносит прибыли. Что бы я ни делал. Selenium не выдает ошибку при нажатии на кнопку, но не нажимает на нее.

в этом коде кнопка нажата мной, а не другом (нажата, но не делать что угодно, будет делать после входа на сайт)

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

def test(): #####################/CHECKOUT WILL DO SOMETHING ONLY AFTER LOGIN ON SITE/#####################################################
    driver = webdriver.Chrome(executable_path=r'C:/webdriver/79.0.3945.36/chromedriver.exe')
    driver.get("https://gamdom.io/marketplace/P2P") # open site
    try:
        driver.find_element_by_xpath("//div[@class='p2p-modal-content__ack']/input").click() # click checkbox
        driver.find_element_by_xpath("//div[@class='p2p-modal-content__button']/button").click() # click confirm
    except:
        pass
    driver.find_element_by_xpath("//div[@class='viewport normal-design']/div[3]/div[2]/div[2]/div[2]/div/div/div/div/div/div/div/div[1]").click() # click on first item
    print(1)
    driver.find_element_by_xpath(f"//div[@class='viewport normal-design']/div[3]/div[2]/div[2]/div[2]/div[2]/div[1]/div[2]/a").click() # click checkout
    print(2)
    input()
test()

1 Ответ

0 голосов
/ 30 марта 2020

Я проверил страницу, на которую вы ссылались. Ну, ваши Xpaths могут быть значительно улучшены. Большая цепочка div / div / div ... не подвержена ошибкам. Все меняется в макете, ваш путь перестает работать. Чтобы правильно выбрать элементы, используйте атрибуты элементов, чтобы правильно определить, что вы ищете. Например:

driver.find_element_by_xpath('//*[@class="invItemContainer  interactive"]')

Это выберет первое поле. Если вы хотите найти все поля, вы можете:

driver.find_elements_by_xpath('//*[@class="invItemContainer  interactive"]')

То же самое относится к URL-адресу 'checkout', как указано выше, оно не подвержено ошибкам:

f"//div[@class='viewport normal-design']/div[3]/div[2]/div[2]/div[2]/div[2]/div[1]/div[2]/a"

Что вам следует сделайте вместо:

driver.find_element_by_xpath('//div[@class="checkout_block bbb"]//a[@class="btn btn_green"]')

Итак, попробуйте это:

driver.find_element_by_xpath('//*[@class="invItemContainer  interactive"]').click()
driver.find_element_by_xpath('//div[@class="checkout_block bbb"]//a[@class="btn btn_green"]').click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...