Селен с использованием Python: как правильно нажать () элемент? - PullRequest
1 голос
/ 08 июня 2019

, изучая, как использовать селен, я пытаюсь щелкнуть по элементу, но ничего не происходит, и я не могу перейти на следующую страницу. это соответствующая страница: http://buyme.co.il и я пытаюсь нажать: הרשמה

Мне удалось напечатать нужный элемент (הרשמה), поэтому я догадываюсь, что достиг нужного места на странице. но «click ()» не работает. второй интервал <span>הרשמה</span> - это то, что я хочу нажать:

<li data-ember-action="636">
        <a>
            <span class="seperator-link">כניסה</span>
            <span>הרשמה</span>
        </a>
 </li>
for elem in driver.find_elements_by_xpath('//* [@id="ember591"]/div/ul[1]/li[3]/a/span[2]'):
    print (elem.text)
    elem.click()

также пробовал это:

driver.find_element_by_xpath('//*[@id="ember591"]/div/ul[1]/li[3]/a').click()

Я ожидал попасть в «лайтбокс», содержащий поля регистрации. Есть мысли о том, как лучше всего это сделать?

Ответы [ 2 ]

1 голос
/ 08 июня 2019

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

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

browser = webdriver.Chrome()
browser.get("https://buyme.co.il/")

WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.ID, 'ember591')))

elm = browser.find_elements_by_xpath('//div[@id="ember591"]/div/ul[1]/li[3]/a')

elm[0].click()

enter image description here

Обновление:

WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, 'login')))

email = browser.find_elements_by_xpath("//form[@id='ember1005']/div[1]/label/input")
email[0].send_keys("abc@gmail.com")

password = browser.find_elements_by_xpath("//form[@id='ember1005']/div[2]/label/input")
password[0].send_keys("test1234567")

login = browser.find_elements_by_xpath('//form[@id="ember1005"]/button')
login[0].click()

enter image description here

0 голосов
/ 08 июня 2019

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

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

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[text()='הרשמה']"))).click()
    
  • Примечание : необходимо добавить следующий импорт:

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