Python Selenium:查找元素并单击基于Text的按钮

时间:2017-12-06 00:43:48

标签: python selenium

基本上,我正在尝试创建一个机器人,可以在页面上找到具有给定raw_input文本的元素,找到按钮并单击它。这样做的目的是单击可能尚未在网页上的链接(按钮),但会在网站刷新后显示。因此,我无法通过XPATH找到元素,因为在第二个链接可用之前,XPATH将是未知的。所以,我的问题是:Selenium是否有办法找到基于文本的按钮并单击它?以下是我的一些代码:

elem1 =driver.find_elements_by_xpath("//*[contains(text(), key1)]")
    if elem1.is_displayed():
        elem1.click()
    else:
        print "Cannot find element to click. Retrying..."
        driver.refresh()

...

core.editor

我需要程序根据关键字查找文本,然后单击其中包含这些关键字的按钮/链接。这可能吗?或者只能使用XPATH?给出elem的示例代码没有工作。

提前致谢

1 个答案:

答案 0 :(得分:0)

好的,首先,唯一一个按文字选择元素的是遗憾的xpath,但不要担心,有一种解决方法可以使用等待

#Libraries (those comes with selenium, you don't have to install anything)
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

#Way
elem1 = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, '//*[contains(text(), 
{})]'.format(key1))
)
elem1.click()

这将使它等待元素可点击如果元素在10秒后无法点击它将引发错误如果它在此之前可点击它将返回元素并自动中断等待。