Используя Селен, как я могу щелкнуть раскрывающееся меню, чтобы перейти на страницу входа в систему https://www.phptravels.net/ - PullRequest
1 голос
/ 20 сентября 2019

У меня есть следующий веб-сайт, который я хотел бы автоматизировать: https://www.phptravels.net/

Я хотел бы нажать «Моя учетная запись», чтобы перейти к «Зарегистрировать» и «Войти».

В настоящее время я делаю это вручную с помощью навигации:

https://www.phptravels.net/demo/login

https://www.phptravels.net/demo/register

Я использую Python 3.7 для этой задачи

У меня естьпопытался найти его с помощью Xpath, но не повезло.он не может ни найти предметы, ни щелкнуть по ним.

[![<a href="javascript:void(0);" data-toggle="dropdown" class="dropdown-toggle go-text-right"><i class="icon_set_1_icon-70 go-right"></i> My Account <b class="lightcaret mt-2 go-left"></b></a>][1]][1]

см. прилагаемое изображение для этого

Ответы [ 4 ]

1 голос
/ 21 сентября 2019

Чтобы войти на Costco.com через URL https://www.costcobusinessdelivery.com/LogonForm?URL=%2f, так как требуемые элементы находятся в пределах <iframe>, вам необходимо:

  • Индуцировать WebDriverWait длятребуемый кадр , который будет доступен, и переключитесь на него .
  • Индуцируйте WebDriverWait , чтобы требуемый элемент был активным .
  • Вы можете использовать следующее решение:

    • css_selector:

      driver.get("https://www.phptravels.net/")
      WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe.full-screen-preview__frame")))
      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "nav li#li_myaccount>a"))).click()
      
    • xpath:

      driver.get("https://www.phptravels.net/")
      WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@class='full-screen-preview__frame']")))
      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//nav//li[@id='li_myaccount']/a"))).click()
      
  • Снимок браузера:

phptravels_login_menu

1 голос
/ 21 сентября 2019

Ссылка My Account доступна внутри iframe имени с именем preview-frame Для доступа к элементу вам необходимо сначала переключить iframe.

Индуцировать WebDriverWait и frame_to_be_available_and_switch_to_it()

Induce WebDriverWait и element_to_be_clickable()

Попробуйте следующий код.

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

driver=webdriver.Chrome()
driver.get("https://www.phptravels.net/")
#Switch to Iframe first
WebDriverWait(driver,15).until(EC.frame_to_be_available_and_switch_to_it((By.NAME,"preview-frame")))
#Click on My Account
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//div[@class='container']//li[@id='li_myaccount']/a[contains(.,'My Account')]"))).click()
#To Click on Login
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//div[@class='container']//ul[@class='dropdown-menu']//a[contains(.,'Login')]"))).click()

Чтобы нажать на кнопку «Зарегистрироваться», вам необходимо добавить следующий код.

#To Click on Sign Up
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//div[@class='container']//ul[@class='dropdown-menu']//a[contains(.,'Sign Up')]"))).click() 

Снимок браузера:

enter image description here

0 голосов
/ 20 сентября 2019

Здесь вы должны сначала нажать на мою учетную запись, а затем нажать либо для входа в систему, либо для регистрации, найдя 2 xpath, т. Е. Один для моей учетной записи, второй для входа в систему и регистрации.Я понятия не имею о Python, но вот xpath:

1) Myaccount: (.//li[@id='li_myaccount'])[2]/a/b

2) Логин: (.//ul[@class='dropdown-menu']/li/a)[3] или

регистрация: (.//ul[@class='dropdown-menu']/li/a)[4]

Если вы знаете, как использовать List<>, вы можете получить список для входа в систему и зарегистрироваться и щелкнуть по нему, используя индекс.

Надеюсь, он работает для вас.Спасибо.

0 голосов
/ 20 сентября 2019

Дэнни

Как выбрать параметр в раскрывающемся меню?

WebDriver предоставляет три способа выбора параметра в раскрывающемся меню.

  1. selectByIndex use

    dropdown.selectByIndex (5);

  2. selectByValue

    dropdown.selectByValue ("База данных");

  3. selectByVisibleText

    dropdown.selectByVisibleText («Тестирование базы данных»);

Надеюсь помочь на куб.

...