如何使用Python为给定的HTML在Selenium中构建一个xpath

时间:2018-06-07 09:05:56

标签: python selenium selenium-webdriver xpath webdriver

我正在使用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

我尝试了很多不同的配置,从最简单的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,但我无法弄清楚如何点击{{1}中的“OK”标签

1 个答案:

答案 0 :(得分:1)

根据 HTML ,您已共享点击文字为确定的元素,因为它是Angular元素,您必须诱导 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()