Как построить xpath в Selenium с Python для данного HTML - PullRequest
0 голосов
/ 07 июня 2018

Я использую Selenium с python для выполнения операции в сети телеграмм, я получаю веб-страницу, выбираю нужную группу, но когда я пытаюсь войти, мне нужно нажать «ОК» или «Отмена», я хочу нажатьхорошо, но я не могу найти правильный способ сделать это!

Ситуация:

<button class="btn btn-md btn-md-primary" 
ng-switch="type" ng-click="$close(data)" 
ng-class="{'btn-md-danger': type == 'RESET_ACCOUNT' || type == 'HISTORY_LEAVE_AND_FLUSH' 
|| type == 'HISTORY_FLUSH_AND_DELETE' || type == 'HISTORY_FLUSH'}" my-focused="">
  <!---->
  <!---->
  <!---->
  <!---->
  <!---->
  <!---->
  <!---->
  <!---->
  <!---->
  <!---->
  <!---->
  <!---->
  <!---->
  <!---->
  <!---->
  <!----><span ng-switch-default="" my-i18n="modal_ok" class="" style="">OK</span><!---->
</button>

xpath: //*[@id="ng-app"]/body/div[6]/div[2]/div/div/div[2]/button[2]/span

I 'Мы пробовали много разных конфигураций, от самых простых browser.find_element_by_tag_name('//span[text()="OK"]').click до чего-то странного browser.find_element_by_xpath('//div[6]/div[2]/div/div/div[2]/button[2][contains(@span, "ng-switch-default")]').click, но я не могу понять, как нажать на это "ОК" в теге <span>

1 Ответ

0 голосов
/ 07 июня 2018

В соответствии с HTML , который вы указали, нажмите на элемент с текстом как OK , так как это Угловой элемент, который вы указалинеобходимо WebDriverWait , чтобы элемент можно было нажимать следующим образом:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC    
# other lines of code
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='btn btn-md btn-md-primary' and @ng-switch='type']//span[contains(.,'OK')]"))).click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...