簡體   English   中英

Python Selenium:查找並單擊一個元素

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM