Селен нажмите кнопку GDPR нажмите кнопку - PullRequest
2 голосов
/ 12 марта 2020

Я пытаюсь программно нажать кнопку запуска скрипта на сервере Ubuntu, чтобы получить доступ к содержимому сайта. Я пытаюсь добраться до сайта с получателями

Это мой код:


driver = webdriver.Firefox(executable_path="/home/ubuntu/.linuxbrew/Cellar/geckodriver/0.26.0/bin/geckodriver",options=options)
data = []


# In[34]:

# click GDPR full-width banner 
start_time = datetime.now()
driver.get("http://some_web_site.here/")
time.sleep(10)

# gdpr_button = driver.find_element_by_link_text("Continue")
#gdpr_button = driver.find_element_by_xpath('//button[text()="Continue"]')

driver.find_element_by_xpath("//input[@style='order:2' and @onclick='sendAndRedirect()']").click()

# //input[@onclick='sendAndRedirect()']
# <button style="order:2" onclick="sendAndRedirect();">Continue</button>

Однако я не могу добраться до элемента и получить

selenium.common.exceptions.TimeoutException: Message: connection refused

Как получить доступ к кнопке «Продолжить» в форме GDPR? Ценю вашу помощь

1 Ответ

1 голос
/ 12 марта 2020

Требуемый элемент является динамическим c элементом, поэтому для определения местоположения / click() на элементе, который вам нужно вызвать WebDriverWait для element_to_be_clickable(), можно использовать любой из следующих Стратегии локатора :

  • Использование CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[onclick^='sendAndRedirect']"))).click()
    
  • Использование XPATH и innerText событие:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[text()='Continue']"))).click()
    
  • с использованием XPATH и onclick событие:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[starts-with(@onclick, 'sendAndRedirect')]"))).click()
    
  • Примечание : Вы должны добавить следующие импорты:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
...