Как щелкнуть элемент панели навигации с помощью Selenium?

#python #python-3.x #selenium #xpath

Вопрос:

Я довольно новичок в Selenium, и я пытался работать над автоматизацией входа для этого [веб-сайта], но по какой-то причине element.click() selenium, похоже, не работает, когда я пытаюсь нажать кнопку входа. Я продолжаю получать эту TypeError: 'str' object is not callable ошибку.

Вот мой код:

     try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH("//li[@class='item-119']/a[contains(text(),'Login')]")))
        )
    print("TEST")
    element.click()

finally:
    driver.quit()
 

Я также пробовал использовать By.CLASS_NAME и By.PARTIAL_LINK_TEXT и я продолжаю получать ту же ошибку. Провел несколько часов, исследуя, просматривая StackOverflow и пытаясь решить эту ошибку, но я, похоже, не в состоянии ее решить. Пожалуйста, помогите мне и дайте мне знать, в чем я ошибся.

Ответ №1:

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

 element = wait.until(EC.visibility_of_element_located((By.XPATH, "//div[@id='header']//a[@class='login-btn']")))
print("TEST")
element.click()
 

Ответ №2:

Вы можете попробовать использовать приведенный ниже xpath :

 try:
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH("(//a[@class='login-btn'])[2]"))).click() 
    print("TEST")
finally:
    driver.quit()