нажмите на тег привязки, имеющий href = '#' - PullRequest
0 голосов
/ 10 мая 2018

Я использую код ниже Python с использованием селена. щелчок не работает для тега привязки, имеющего href = "#"

import time    
import unittest   
from selenium import webdriver   
from selenium.webdriver.common.by import By   
from selenium.webdriver.support.ui import Select   
from selenium.webdriver.common.keys import Keys   

driver = webdriver.Chrome("E:\chromedriver.exe")   
driver.get('file:///E:/Selenium/validateTest.html')     

driver.find_element_by_xpath("//a[@id='validateData']/i[text()=' Validate Data']").click()  

Вот код HTML, который я использую.

<h1>Anchor tag</h1>

<a href="#" class="button js-button" role="button">Show content</a>

<a href="#" id="validateData" class="btn btn-red" onclick="document.write(5 + 6)"><i class="fa fa-binoculars" aria-hidden="true"></i> Validate Data</a>

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

В соответствии с HTML, которым вы поделились, кажется, AUT основан на JavaScript , поэтому, чтобы перейти по ссылке с текстом как Подтвердить данные , у вас есть заставить WebDriverWait сделать элемент кликабельным, и вы можете использовать любую из следующих опций:

  • LINK_TEXT:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Validate Data"))).click()
    
  • CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.btn.btn-red#validateData"))).click()
    
  • XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='btn btn-red' and @id='validateData']"))).click()
    

Примечание : Вам потребуется следующий импорт:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
0 голосов
/ 10 мая 2018

Попробуйте использовать javascript executor, чтобы щелкнуть ваш элемент.

JavascriptExecutor js = (JavascriptExecutor) driver; 
WebElement elementToClick = driver.find_element_by_xpath("//a[@id='validateData']/i[text()=' Validate Data']");
js.executeScript("arguments[0].click();", elementToClick);

Выше код должен быть адаптирован к Python (с которым я не знаком, но вы поняли идею)

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...