Как мне получить href onclick=»#» в python selenium

#python-3.x #selenium

Вопрос:

 <a href="#" onclick="showZone("gaoland.net")">gaoland.net</a>  

Я хочу нажать на ссылку из onclick.

Я использую python селен. Спасибо

Я уже проверил все это, но безуспешно

 browser.find_element_by_xpath('//href[text()="gaoland.net"]').click() browser.find_element_by_xpath('//a[@href="#"]').click() browser.find_element_by_xpath('//a[contains(@href,"#")]').click() browser.find_element_by_xpath("//a[contains(@onclick, "'showZone("gaoland.net")'")]").click() browser.find_element_by_partial_link_text("gaoland.net"  Keys.RETURN) browser.find_element_by_xpath("//a[con**strong text**tains(@onclick, '#')]").click() browser.find_element_by_xpath('//a[contains(@href,"showZone("gaoland.net")")]').click() browser.find_element_by_partial_link_text('showZone("gaoland.net")').click() browser.find_element_by_xpath('//a[contains(@onclick="showZone("gaoland.net")]').click()  

Ответ №1:

Предпочтительным способом является LINK_TEXT :

 browser.find_element_by_link_text('gaoland.net').click()  

или с помощью WebDriverWait :

 WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "gaoland.net"))).click()  

Импорт :

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

если это не работает, пожалуйста, попробуйте xpath или css селектор :

  1. xpath :
     //a[contains(@onclick,'showZone') and text()='gaoland.net']  

или

 //a[contains(@onclick,'showZone')]  

css был бы :

 a[onclick^='showZone']  

Вы можете использовать либо использовать driver.find_element_by_xpath('') , либо

 WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[contains(@onclick,'showZone')]"))).click()  

PS : Пожалуйста, проверьте в dev tools (Google chrome), есть ли у нас уникальная запись HTML DOM или нет.

Шаги для проверки:

Press F12 in Chrome -> перейдите в > element раздел -> сделайте > CTRL F -> затем вставьте > xpath и посмотрите, element выделяется ли ваш желаемый 1/1 соответствующий узел.

Комментарии:

1. Большое спасибо за работу WebDriverWait(браузер, 20).до тех пор, пока(EC.element_to_be_clickable((По.XPATH, «//a[содержит(@onclick,’showZone’)]»))).нажмите()