【问题标题】:Angular JS: Selenium cannot click a button by python code on macAngular JS:Selenium 无法通过 mac 上的 python 代码单击按钮
【发布时间】:2018-03-23 05:57:28
【问题描述】:

我有一个按钮,我可以成功找到它并捕获它的文本。但是单击不起作用。有人可以帮忙吗?

<button class="yellow labeled icon button no-margin" type="button">
<div class="icon my_class"></div>
<span class="ttt">Add new student</span>
</button>

这行得通:

return driver.find_element(By.XPATH, 'xpath').text

但这不起作用,“也不例外”。代码通过但点击未完成。

driver.find_element(By.XPATH, 'xpath').click()

【问题讨论】:

    标签: python selenium selenium-webdriver


    【解决方案1】:

    你可以尝试用javascript点击它:

    element = driver.find_element(By.XPATH, 'xpath') driver.execute_script("arguments[0].click();", element)

    【讨论】:

      【解决方案2】:

      粗略调用 .textclick()WebElement 的两种不同状态有关。

      您的代码块return driver.find_element(By.XPATH, 'xpath').text 成功,因为文本Add new student 在您查找时在HTML DOM 中呈现。这并不能保证 WebElement 到那时也是 interactable 的。 JavaScript/Ajax 有可能在那个时间点渲染button

      值得一提的是,文本 Add new student 的呈现类似于 text_to_be_present_in_element 的 expected_conditions 子句,其中 interactability(即可点击性) 类似于 expected_conditions element_to_be_clickable的子句

      解决方案

      正如您所提到的,它是一个基于 AngularJS 的站点/元素,并且点击没有被执行,您必须将 WebDriverWaitexpected_conditions 子句设置为 element_to_be_clickable 结合,如下所示:

      WebDriverWait(self.driver, 30).until(EC.element_to_be_clickable((By.XPATH, "xpath"))).click()
      

      【讨论】:

      • 新观察...一旦我通过自动化流程到达该页面,我就无法手动单击。只有当浏览器通过自动化测试打开时才会发生这种情况,否则如果我手动打开网站,我总是可以点击。
      • 粗略地说,这听起来与您提出问题的问题不同。您可以根据您的新要求提出新问题。
      猜你喜欢
      • 2019-05-24
      • 1970-01-01
      • 2019-05-21
      • 2011-07-09
      • 2021-01-26
      • 1970-01-01
      • 2017-05-09
      • 2019-02-25
      • 1970-01-01
      相关资源
      最近更新 更多