如何使用selenium - python定位Angularjs元素

时间:2017-02-02 08:56:43

标签: python angularjs selenium

<button ng-if="vm.signatureRequired" ng-disabled="!vm.signature || vm.signature.length < 2" type="button" aria-hidden="true" data-ng-click="$hide();vm.isAgreement=true;" class="btn btn-default back_btn ng-scope">I Agree</button>

我尝试了Link_Textxpathclass ..定位器 但它的投掷

  

&#34;引发exception_class(消息,屏幕,堆栈跟踪)   selenium.common.exceptions.NoSuchElementException:消息:没有这样的   element:无法找到元素:&#34;

1 个答案:

答案 0 :(得分:0)

显然,您的选择器(在评论中提供)不会起作用:

  • 您不能将find_element_by_class_name()与复合类名称
  • 一起使用
  • 您无法将find_element_by_link_text()应用于button元素(仅限a

尝试使用以下代码,如果异常仍然发生,请告诉我:

driver.find_element_by_xpath('//button[text()="I Agree"]').click()

您可能还需要花些时间等待按钮变为可点击状态:

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


wait = WebDriverWait(driver, 10)
wait.until(EC.element_to_be_clickable((By.XPATH, '//button[text()="I Agree"]'))).click()

解决NoSuchElementException的另一种方法是检查您的元素是否位于frame / iframe块内。如果是这样,您需要在处理目标元素之前切换到该帧:

driver.switch_to_frame('frame_name_or_id')