[英]Python Selenium: find and click an element
如何使用Python简单地找到包含text / id / etc的链接然后单击该元素?
我的进口:
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
要转到我的网址的代码:
browser = webdriver.Firefox() # Get local session of firefox
browser.get(myURL) # Load page
#right here I want to look for element containing "Click Me" in the text
#and then click it
查看WebDriver
类的方法列表 - http://selenium.googlecode.com/svn/trunk/docs/api/py/webdriver_remote/selenium.webdriver.remote.webdriver.html
例如,要按ID查找元素并单击它,代码将如下所示
element = browser.find_element_by_id("your_element_id")
element.click()
包含文本的链接
browser = webdriver.firefox()
browser.find_element_by_link_text(link_text).click()
你只需使用这段代码
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
driver = webdriver.Firefox()
driver.get("https://play.spotify.com/")# here change your link
wait=WebDriverWait(driver,250)
# it will wait for 250 seconds an element to come into view, you can change the #value
submit=wait.until(EC.presence_of_element_located((By.LINK_TEXT, 'Click Me')))
submit.click()
这里等待是最适合启用javascript的网站让我们假设如果你在webdriver中加载页面但由于javascript某些元素在一些秒后加载然后它最好套件在那里使用wait元素。
您好,有几种方法可以找到链接(或任何元素):
element = driver.find_element_by_id("element-id")
element = driver.find_element_by_name("element-name")
element = driver.find_element_by_xpath("//input[@id='element-id']")
element = driver.find_element_by_link_text("link-text")
element = driver.find_element_by_class_name("class-name")
我认为最好的选择是find_element_by_link_text
因为它是一个链接。 将元素保存在变量中后,可以调用click函数: element.click()
或element.send_keys(Keys.RETURN)
看看selenium-python文档 ,那里有几个例子。
尝试SST - 它是一个简单但非常好的python测试框架。 首先安装它: http : //testutils.org/sst/index.html
然后:
进口:
from sst.actions import *
首先定义一个你想要的变量element
element = assert_element(text="some words and more words")
我用过这个: http : //testutils.org/sst/actions.html#assert-element
然后单击该元素:
click_element('element')
就是这样。
您也可以通过xpath执行此操作:
Browser.find_element_by_xpath("//a[@href='you_link']").click()
通过链接文本查找元素
driver.find_element_by_link_text("")
按名称查找元素
driver.find_element_by_name("")
按ID查找元素
driver.find_element_by_id("")
首先启动一个浏览器实例。 然后,您可以使用以下任何方法来获取元素或链接。 找到元素后,您可以使用element.click()
或element.send_keys(Keys.RETURN)
或selenium webdriver
任何其他对象
browser = webdriver.Firefox()
Selenium提供了以下方法来定位页面中的元素:
找到个别元素。 这些方法将返回单个元素。
browser.find_element_by_id(id)
browser.find_element_by_name(name)
browser.find_element_by_xpath(xpath)
browser.find_element_by_link_text(link_text)
browser.find_element_by_partial_link_text(partial_link_text)
browser.find_element_by_tag_name(tag_name)
browser.find_element_by_class_name(class_name)
browser.find_element_by_css_selector(css_selector)
要查找多个元素(这些方法将返回一个列表)。 稍后您可以遍历列表或使用elementlist[n]
您可以从列表中找到单个元素。
browser.find_elements_by_name(name)
browser.find_elements_by_xpath(xpath)
browser.find_elements_by_link_text(link_text)
browser.find_elements_by_partial_link_text(partial_link_text)
browser.find_elements_by_tag_name(tag_name)
browser.find_elements_by_class_name(class_name)
browser.find_elements_by_css_selector(css_selector)
browser.find_element_by_xpath("")
browser.find_element_by_id("")
browser.find_element_by_name("")
browser.find_element_by_class_name("")
在(“”)内你必须放置相应的xpath,id,name,class_name等...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.