等待Selenium Webdriver中的按钮状态更改

时间:2016-11-14 14:15:00

标签: python selenium xpath selenium-webdriver

我正在测试一个文本框和按钮 - 用户在文本框中输入一些信息然后点击按钮 - 按钮改变文本来自"更新"到"更新"然后回到"更新"一旦操作完成。

我希望Selenium等到按钮返回"更新"在继续之前。

我尝试过使用xpath的各种解决方案,这就是我现在的位置:

self.wait.until(EC.element_to_be_clickable(By.XPATH, '//button[@id="send_data"][text()="Update"]'))

按钮的HTML如下:

<button id="send_data" type="button" class="btn btn-success" onclick="ChangeParam(this,'radio','freq'; return false;">Update</button>

<button id="send_data" type="button" class="btn btn-default" onclick="ChangeParam(this,'radio','freq'; return false;">Updating</button>

我哪里错了?

2 个答案:

答案 0 :(得分:0)

这是一个非常常见的问题:您应该将type_of_locator, "locator_string"作为参数元组((By.XPATH, "//button"))发送,而不是作为两个单独的参数(By.XPATH, "//button")

发送

使用以下代码

self.wait.until(EC.element_to_be_clickable((By.XPATH,'//button[@id="send_data"][text()="Update"]')))

答案 1 :(得分:-1)

另一个可行的解决方案是使用EC.invisibility_of_element_located。单击“更新”按钮后,您可以等待“更新”状态按钮代表的元素的隐身状态。

self.wait.until(EC.invisibility_of_element_located((By.CSS_SELECTOR,'button#send_data .btn-default')))