Python, Selenium: как нажать на элемент javascript: void (0) - PullRequest
3 голосов
/ 04 августа 2020

У меня есть элемент «onclick» на веб-странице,

<a href="javascript:void(0)" onclick=
    "toIndexHtml('3','http://xxxxxxxxxxx/trade','0')">
<i></i>
<span></span>
trade
</a>

Он отображается на веб-странице в виде кнопки, и я хочу нажать на нее, я попытался найти его, используя следующий код :

driver.find_element_by_xpath("//a[contains(@onclick,'toIndexHtml')]").click()
WebDriverWait(driver, 20).until(
    EC.element_to_be_clickable((By.XPATH,"/html/body/div/ul/li[3]/a"))).click()

Оба не работают, подскажите, пожалуйста, есть ли другие способы! Заранее спасибо!

PS: Я использую Chrome WebDriver и Chrome v64.

1 Ответ

0 голосов
/ 04 августа 2020

Ваш первый локатор выглядит идеально и должен сработать.

В идеале, чтобы щелкнуть элемент, который вам нужно вызвать, WebDriverWait для element_to_be_clickable(), и вы можете использовать любой из следующих Стратегии локатора :

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

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a[onclick^='toIndexHtml']"))).click()
    
  • Использование XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[starts-with(@onclick,'toIndexHtml')]"))).click()
    
  • Примечание : вам необходимо добавить следующие импорты:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...