[英]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.