中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

怎么用數(shù)據(jù)庫做動(dòng)態(tài)網(wǎng)站最近國(guó)際新聞大事

怎么用數(shù)據(jù)庫做動(dòng)態(tài)網(wǎng)站,最近國(guó)際新聞大事,wordpress遠(yuǎn)程自動(dòng)下載圖片大小,ftp網(wǎng)站服務(wù)器常見控件應(yīng)用 復(fù)雜的控件操作1.操作Ajax選項(xiàng)2.滑動(dòng)滑塊操作 WebDriver的特殊操作元素class值包含空格property、attribute、text的區(qū)別定位動(dòng)態(tài)id 截圖功能頁面截圖頁面截圖,返回截圖的二進(jìn)制數(shù)據(jù)頁面截圖,返回base64的字符串截取指定元素。先定位元素&a…

常見控件應(yīng)用

  • 復(fù)雜的控件操作
    • 1.操作Ajax選項(xiàng)
    • 2.滑動(dòng)滑塊操作
  • WebDriver的特殊操作
    • 元素class值包含空格
    • property、attribute、text的區(qū)別
    • 定位動(dòng)態(tài)id
  • 截圖功能
    • 頁面截圖
    • 頁面截圖,返回截圖的二進(jìn)制數(shù)據(jù)
    • 頁面截圖,返回base64的字符串
    • 截取指定元素。先定位元素,然后截圖
    • 測(cè)試斷言失敗截圖
  • 獲取焦點(diǎn)元素
  • 顏色驗(yàn)證
  • JavaScript的應(yīng)用
    • 高亮顯示正在被操作的頁面元素
    • 修改頁面元素屬性
    • 操作頁面元素
    • 操作滾動(dòng)條
      • 借助JavaScript操作縱向滾動(dòng)條
      • 借助JavaScript操作橫向滾動(dòng)條
      • 操作內(nèi)嵌滾動(dòng)條
      • 引申通過ActionChains 實(shí)現(xiàn)滾動(dòng)條
    • 操作span類型元素
      • 通過id來定位元素,獲取span的文本
      • 通過JavaScript修改標(biāo)簽的文本

復(fù)雜的控件操作

1.操作Ajax選項(xiàng)

Ajax即Asynchronous JavaScript and XML(異步JavaScript和XML),是指一種創(chuàng)建交互式、快速動(dòng)態(tài)網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù)。通過在后臺(tái)與服務(wù)器進(jìn)行少量數(shù)據(jù)交換,Ajax可以使網(wǎng)頁實(shí)現(xiàn)異步更新。這意味著Ajax可以在不重新加載整個(gè)網(wǎng)頁的情況下,對(duì)網(wǎng)頁的某部分內(nèi)容進(jìn)行更新。搜狗搜索的搜索框使用了Ajax。被測(cè)地址為https://www.sogou.com/。單擊一下搜狗搜索框,切換到搜索框后,會(huì)彈出推薦搜索的熱詞,這個(gè)效果就是Ajax效果。

在這里插入圖片描述

  • 通過模擬鍵盤輸入下鍵(↓)進(jìn)行選項(xiàng)選擇
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
driver.get('https://www.sogou.com/')ele1 = driver.find_element(By.ID,"query")
ele1.click()
sleep(1)
ele1.send_keys(Keys.ARROW_DOWN)
ele1.send_keys(Keys.ARROW_DOWN)
ele1.send_keys(Keys.ARROW_DOWN)
sleep(5)
driver.quit()
  • 通過模糊匹配選擇選項(xiàng)。
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
driver.get('https://www.sogou.com/')
driver.find_element(By.ID,'query').send_keys('storm')
sleep(1)
sercont = driver.find_element(By.XPATH,'//*[@id="vl"]/div[1]/ul/li[contains(.,"形容詞")]').click()
sleep(5)
driver.quit()

上述代碼先在搜索框中輸入了“storm”,然后從匹配的選項(xiàng)中選擇了帶有“形容詞”字樣的選項(xiàng),再進(jìn)行搜索操作(搜索“storm+形容詞”)。

  • 固定選擇某一個(gè)位置的選項(xiàng)。
    Ajax懸浮框的內(nèi)容會(huì)發(fā)生變化(根據(jù)一定的推薦算法),而某些時(shí)候你可能只是想固定選擇懸浮框中的某一個(gè)選項(xiàng),如第二項(xiàng),這時(shí)可以參考下面的代碼
from selenium import webdriver
from time import sleepdriver = webdriver.Chrome()
driver.get('https://www.sogou.com/')
driver.find_element('id','query').send_keys('storm')
sleep(1)
sercont = driver.find_element('xpath','//*[@id="vl"]/div[1]/ul/li[2]').click() # li[2]選擇第2項(xiàng)
sleep(5)
driver.quit()

2.滑動(dòng)滑塊操作

在實(shí)際項(xiàng)目中,你可能會(huì)遇到以下場(chǎng)景:在某些頁面中需要從左到右拖動(dòng)滑塊進(jìn)行驗(yàn)證,然后才能進(jìn)行下一步操作。
在這里插入圖片描述
在這里插入圖片描述
可以看出,無論是滑塊本身,還是滑塊所在的框,都是div元素。

  • 操作思路
    • 定位到滑塊。
    • 計(jì)算滑塊框的寬度。
    • 然后將滑塊向右拖動(dòng)框的寬度的距離。
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
driver.get('https://passport.ctrip.com/user/reg/home')
driver.find_element(By.XPATH,'//*[@id="agr_pop"]/div[3]/a[2]').click()
sleep(2)
# 獲取滑塊
slider = driver.find_element(By.XPATH,'//*[@id="slideCode"]/div[1]/div[2]')
# 獲取整個(gè)滑塊框
ele = driver.find_element(By.ID,'slideCode')
# 需要使用到Actions的方法來進(jìn)行拖動(dòng)
ActionChains(driver)\.drag_and_drop_by_offset(slider,ele.size['width'], ele.size ['height'])\.perform()
# 這樣也行,向右拖動(dòng)一定的距離,長(zhǎng)度是滑塊框的寬度
# ActionChains(driver).drag_and_drop_by_offset(slider,ele.size['width'], 0).perform()
sleep(2)
driver.quit()

WebDriver的特殊操作

元素class值包含空格

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>元素class值帶空格</title>
</head>
<body>
Please input your name: <input class="hello storm">
</body>
</html>
  • 使用空格前面或后面的部分來定位元素
rom selenium import webdriver
from time import sleep
import osdriver = webdriver.Chrome()
html_file = 'File:///' + os.getcwd() + os.sep + 'myhtml7_1.html'
driver.get(html_file)
# 使用空格前面或后面的部分來定位元素
driver.find_element_by_class_name('hello').send_keys('Storm')
sleep(2)
driver.quit()
  • 使用CSS來定位元素,空格用“.”代替
from selenium import webdriver
from time import sleep
import osdriver = webdriver.Chrome()
html_file = 'File:///' + os.getcwd() + os.sep + 'myhtml7_1.html'
driver.get(html_file)
# 使用CSS來定位元素,空格用"."代替
driver.find_element_by_css_selector('.hello.storm').send_keys('Storm')
sleep(2)
driver.quit()

property、attribute、text的區(qū)別

  • get_property就是用來獲取元素屬性的,目標(biāo)元素id和name就可以通過該方法獲取;
  • get_attribute(“value”)就是用來獲取文本框中輸入的內(nèi)容的;
  • text屬性就是元素本身的文字顯示;
  • “property”是DOM中的屬性,是JavaScript里的對(duì)象;“attribute”是HTML標(biāo)簽上的特性,它的值只能是字符串。

定位動(dòng)態(tài)id

輸入框有id屬性,id的值由兩大部分構(gòu)成,前面是“auto-id-”字符,后面是一串?dāng)?shù)字。當(dāng)你刷新頁面的時(shí)候會(huì)發(fā)現(xiàn),這串?dāng)?shù)字會(huì)發(fā)生變化,這個(gè)id就是動(dòng)態(tài)id。

那如何定位動(dòng)態(tài)id元素呢?

  • 使用其他方式定位如果該元素有其他唯一屬性值,如class name、name等,我們可以使用這些屬性來定位。
  • 根據(jù)相對(duì)關(guān)系定位根據(jù)父子、兄弟相鄰節(jié)點(diǎn)定位
  • 根據(jù)部分元素屬性定位
    XPath提供了3種非常強(qiáng)大的方法來支持定位部分屬性值。contains(a, b):如果a中含有字符串b,則返回True,否則返回False。starts-with(a, b):如果a以字符串b開頭,則返回True,否則返回False。ends-with(a, b):如果a以字符串b結(jié)尾,返回True,否則返回False。

使用contains關(guān)鍵字

from selenium import webdriver
from time import sleepdriver = webdriver.Chrome()
driver.get('https://www.126.com/')
driver.find_element_by_link_text('密碼登錄').click()
sleep(2)
driver.switch_to.frame(0)
driver.find_element_by_xpath('//input[contains(@id,"auto-id-")]').send_keys('storm')
sleep(2)
driver.quit()

使用starts-with關(guān)鍵字

from selenium import webdriver
from time import sleepdriver = webdriver.Chrome()
driver.get('https://www.126.com/')
driver.find_element_by_link_text('密碼登錄').click()
sleep(2)
driver.switch_to.frame(0)
driver.find_element_by_xpath('//input[starts-with(@id,"auto-id-")]').send_keys('storm')
sleep(2)
driver.quit()

截圖功能

頁面截圖

截取當(dāng)前頁面,保存成.png圖片

from selenium import webdriverdriver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
driver.save_screenshot('a.png') # 截取當(dāng)前頁面,保存到當(dāng)前目錄,保存成.png圖片
# driver.get_screenshot_as_file('a.png'),和上面功能相同
driver.quit()

腳本執(zhí)行后,程序會(huì)在腳本所在目錄生成一張名為“a.png”的圖片。為了避免圖片名重復(fù),我們將圖片名修改為“腳本名+時(shí)間戳+.png”的格式

from selenium import webdriver
import os
import timescript_name = os.path.basename(__file__).split('.')[0] # 獲取當(dāng)前腳本的名稱,不包含擴(kuò)展名
file_name = script_name + '_' + str(time.time()) + '.png'  #組合成圖片名
# print(file_name)
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
driver.save_screenshot(file_name) # 截取當(dāng)前頁面,保存成".png"圖片
driver.quit()

頁面截圖,返回截圖的二進(jìn)制數(shù)據(jù)

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
a = driver.get_screenshot_as_png()  # 截圖,返回截圖的二進(jìn)制數(shù)據(jù)
print(type(a))
print(a)
driver.quit()

頁面截圖,返回base64的字符串

截取指定元素。先定位元素,然后截圖

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.baidu.com/')
driver.find_element_by_id('su').screenshot('d:\\A\\button.png') # 定位元素,然后截圖
driver.quit()

測(cè)試斷言失敗截圖

這里我們構(gòu)造一個(gè)斷言失敗的場(chǎng)景:打開百度首頁,在搜索框中輸入“Storm”,然后斷言搜索框中的文字是不是“storm”,因大小寫不匹配執(zhí)行截圖操作。

from selenium import webdriverdriver = webdriver.Chrome()
driver.get('http://www.baidu.com/')
driver.find_element_by_id('kw').send_keys('Storm')
if driver.find_element_by_id('kw').text == "storm":pass
else:driver.save_screenshot('d:\\A\\a.png')
driver.quit()

獲取焦點(diǎn)元素

當(dāng)瀏覽器訪問某個(gè)頁面時(shí),頁面中會(huì)有默認(rèn)的焦點(diǎn)元素。例如,我們?cè)L問百度首頁時(shí),默認(rèn)的焦點(diǎn)元素是搜索框,即打開百度首頁后,光標(biāo)自動(dòng)定位在搜索框。這時(shí)候我們可以使用“driver.switch_to.active_element”來獲取搜索框元素。

from selenium import webdriverdriver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# 獲取當(dāng)前焦點(diǎn)所在元素的attribute信息
id = driver.switch_to.active_element.get_attribute('id')print(id)
driver.quit()  

顏色驗(yàn)證

在測(cè)試過程中,偶爾會(huì)需要驗(yàn)證某事物的顏色。但問題是網(wǎng)絡(luò)上對(duì)顏色的定義可能采用了不同的方式,如HEX、RGB、RGBA、HSLA。如何去判斷顏色是否符合預(yù)期呢?首先,你需要引入“Color”的包。

from selenium.webdriver.support.color import Color

創(chuàng)建顏色對(duì)象

HEX_COLOUR = Color.from_string('#2F7ED8')
RGB_COLOUR = Color.from_string('rgb(255, 255, 255)')
RGB_COLOUR = Color.from_string('rgb(40%, 20%, 40%)')
RGBA_COLOUR = Color.from_string('rgba(255, 255, 255, 0.5)')
RGBA_COLOUR = Color.from_string('rgba(40%, 20%, 40%, 0.5)')
HSL_COLOUR = Color.from_string('hsl(100, 0%, 50%)')
HSLA_COLOUR = Color.from_string('hsla(100, 0%, 50%, 0.5)')

還可以指定基本顏色

BLACK = Color.from_string('black')
CHOCOLATE = Color.from_string('chocolate')
HOTPINK = Color.from_string('hotpink')

如果元素未設(shè)置顏色,則有時(shí)瀏覽器將返回“透明”的顏色值。Color類也支持以下內(nèi)容。

TRANSPARENT = Color.from_string('transparent')

現(xiàn)在可以安全地查詢?cè)匾垣@取其顏色或背景色,直到任何響應(yīng)都會(huì)被正確解析并轉(zhuǎn)換為有效的Color對(duì)象。

login_button_colour = Color.from_string(driver.find_element(By.ID,'login').value_of_css_property('color'))login_button_background_colour = Color.from_string(driver.find_element(By.ID,'login').value_of_css_property('background-color'))

還可以直接比較顏色對(duì)象。

assert login_button_background_colour == HOTPINK

可以將顏色轉(zhuǎn)換為以下格式之一,并執(zhí)行靜態(tài)驗(yàn)證。

assert login_button_background_colour.hex == '#ff69b4'
assert login_button_background_colour.rgba == 'rgba(255, 105, 180, 1)'
assert login_button_background_colour.rgb == 'rgb(255, 105, 180)'

JavaScript的應(yīng)用

JavaScript是Web頁面的編程語言。Selenium提供了execute_script方法,用來執(zhí)行JavaScript,從而完成一些特殊的操作。

高亮顯示正在被操作的頁面元素

測(cè)試過程中,我們可以借助JavaScript高亮顯示正在被操作的元素。
在這里插入圖片描述

from selenium.webdriver.common.by import Bydef highLightElement(driver, element):'''#封裝高亮顯示頁面元素的方法:使用js代碼將頁面元素對(duì)象的背景顏色設(shè)置為綠色,邊框設(shè)置為紅色:param driver::param element::return:'''driver.execute_script("arguments[0].setAttribute('style', arguments[1]);", element,"background: green; border: 2px solid red;")if __name__ == '__main__':from selenium import webdriverfrom time import sleepdriver = webdriver.Chrome()driver.get('https://www.baidu.com/')ele = driver.find_element(By.ID,'kw')highLightElement(driver, ele)sleep(3)driver.quit()

修改頁面元素屬性

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>日期時(shí)間控件</title>
</head>
<body>
<input type="date" name="name1" id="id1" readonly>
</body>
</html>
from selenium import webdriver
from time import sleep
import osfrom selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
html_file = 'File:///' + os.getcwd() + os.sep + 'myhtml.html'
driver.get(html_file)
sleep(2)
driver.find_element(By.TAG_NAME,'input').send_keys('002020/06/06')
sleep(5)
driver.quit()

執(zhí)行腳本,雖然沒有報(bào)錯(cuò),但是內(nèi)容并沒寫入文本框。接下來我們通過JavaScript先刪除掉readonly屬性,再來輸入內(nèi)容。

from selenium import webdriver
from time import sleep
import osfrom selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
html_file = 'File:///' + os.getcwd() + os.sep + 'myhtml.html'
driver.get(html_file)
sleep(2)
js2 = "document.getElementById('id1').removeAttribute('readonly')"
driver.execute_script(js2)driver.find_element(By.TAG_NAME,'input').send_keys('002020/06/06')
sleep(5)
driver.quit()

在這里插入圖片描述

操作頁面元素

from selenium import webdriver
from time import sleepdriver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
ele1JS = "document.getElementById('kw').value='storm'"
ele2JS = "document.getElementById('su').click()"
driver.execute_script(ele1JS)
sleep(3)
driver.execute_script(ele2JS)
sleep(3)
driver.quit()

運(yùn)行成功,通過removeAttribute方法成功刪除掉了readonly屬性并輸入了內(nèi)容。另外,再提供以下幾種刪除元素屬性的方法

# js = "document.getElementById('c-date1').removeAttribute('readonly')" # 原生js,移除屬性
# js = "$('input[id=c-date1]').removeAttr('readonly')"  # jQuery,移除屬性
# js = "$('input[id=c-date1]').attr('readonly',False)"  # jQuery,設(shè)置為False
# js = "$('input[id=c-date1]').attr('readonly','')"  # jQuery,設(shè)置為空
ele = driver.find_element_by_id('reg_butt')
js1 = "arguments[0].click()"
driver.execute_script(js1,ele)

操作滾動(dòng)條

借助JavaScript操作縱向滾動(dòng)條

from selenium import webdriver
from time import sleepfrom selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
# driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
driver.find_element(By.ID,'kw').send_keys("storm")
driver.find_element(By.ID,'su').click()
js1 = "window.scrollTo(0, document.body.scrollHeight)"# 滑動(dòng)滾動(dòng)條到底部
js2 = "window.scrollTo(0,0)"# 滑動(dòng)到頂端
js3 = "window.scrollTo(0,200)"# 向下滑動(dòng)200像素
js4 = "arguments[0].scrollIntoView();"  # 滑動(dòng)到指定元素
sleep(2) #等待頁面加載完,注意觀察滾動(dòng)條目前處于最上方
driver.execute_script(js1) #執(zhí)行js1,將滾動(dòng)條滑到最下方
sleep(2) #加等待時(shí)間,看效果
driver.execute_script(js2) #執(zhí)行js2,將滾動(dòng)條滑到最上方
sleep(2) #加等待時(shí)間,看效果
driver.execute_script(js3) #執(zhí)行js3,將滾動(dòng)條向下滑動(dòng)到200像素
sleep(2) #加等待時(shí)間,看效果
driver.execute_script(js2) #執(zhí)行js2,將滾動(dòng)條滑到最上方
sleep(2)
ele = driver.find_element(By.ID,'con-ar')  #定位一個(gè)元素
driver.execute_script(js4,ele)  #滑動(dòng)到上面定位的元素的地方
sleep(2)
driver.quit()

借助JavaScript操作橫向滾動(dòng)條

from selenium import webdriver
from time import sleepdriver = webdriver.Chrome()
# driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
driver.find_element('id','kw').send_keys("storm")
driver.find_element('id','su').click()
driver.set_window_size(500,500) #縮小瀏覽器窗口,使之出現(xiàn)橫向滾動(dòng)條
js5 = "window.scrollTo(document.body.scrollWidth,0)"
js6 = "window.scrollTo(0,0)"
js7 = "window.scrollTo(200,0)"
driver.execute_script(js5)  #滑動(dòng)到最右邊
sleep(2)
driver.execute_script(js6) #滑動(dòng)到最左邊
sleep(2)
driver.execute_script(js7) #向右滑動(dòng)200像素
sleep(2)
driver.quit()

操作內(nèi)嵌滾動(dòng)條

內(nèi)嵌滾動(dòng)條一般嵌在一個(gè)iframe里面,先切換到要操作的滾動(dòng)條所在的iframe,然后正常調(diào)用JavaScript即可。

from selenium import webdriver
from time import sleepdriver = webdriver.Chrome()
# driver = webdriver.Firefox()
driver.get("http://sahitest.com/demo/iframesTest.htm")
sleep(2)
driver.switch_to.frame(1)
js5 = "window.scrollTo(0,200)"
driver.execute_script(js5)  #向下滑動(dòng)200像素
sleep(2)
driver.quit()

引申通過ActionChains 實(shí)現(xiàn)滾動(dòng)條

import time
from time import sleepfrom selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.common.actions.wheel_input import ScrollOrigin'''
scroll_to_element: 滾動(dòng)條移動(dòng)到元素
'''
def test_can_scroll_to_element(driver):driver.get("https://selenium.dev/selenium/web/scrolling_tests/frame_with_nested_scrolling_frame_out_of_view.html")time.sleep(1)iframe = driver.find_element(By.TAG_NAME, "iframe")ActionChains(driver)\.scroll_to_element(iframe)\.perform()time.sleep(5)assert _in_viewport(driver, iframe)def test_can_scroll_from_viewport_by_amount(driver):driver.get("https://selenium.dev/selenium/web/scrolling_tests/frame_with_nested_scrolling_frame_out_of_view.html")footer = driver.find_element(By.TAG_NAME, "footer")delta_y = footer.rect['y']print(delta_y)ActionChains(driver)\.scroll_by_amount(0, delta_y)\.perform()sleep(0.5)assert _in_viewport(driver, footer)def test_can_scroll_from_element_by_amount(driver):driver.get("https://selenium.dev/selenium/web/scrolling_tests/frame_with_nested_scrolling_frame_out_of_view.html")iframe = driver.find_element(By.TAG_NAME, "iframe")scroll_origin = ScrollOrigin.from_element(iframe)ActionChains(driver)\.scroll_from_origin(scroll_origin, 0, 200)\.perform()sleep(0.5)driver.switch_to.frame(iframe)checkbox = driver.find_element(By.NAME, "scroll_checkbox")sleep(3)assert _in_viewport(driver, checkbox)def test_can_scroll_from_element_with_offset_by_amount(driver):driver.get("https://selenium.dev/selenium/web/scrolling_tests/frame_with_nested_scrolling_frame_out_of_view.html")footer = driver.find_element(By.TAG_NAME, "footer")scroll_origin = ScrollOrigin.from_element(footer, 0, -50)ActionChains(driver)\.scroll_from_origin(scroll_origin, 0, 200)\.perform()sleep(2)iframe = driver.find_element(By.TAG_NAME, "iframe")driver.switch_to.frame(iframe)checkbox = driver.find_element(By.NAME, "scroll_checkbox")assert _in_viewport(driver, checkbox)def test_can_scroll_from_viewport_with_offset_by_amount(driver):driver.get("https://selenium.dev/selenium/web/scrolling_tests/frame_with_nested_scrolling_frame.html")sleep(2)scroll_origin = ScrollOrigin.from_viewport(10, 10)ActionChains(driver)\.scroll_from_origin(scroll_origin, 0, 200)\.perform()sleep(3)iframe = driver.find_element(By.TAG_NAME, "iframe")driver.switch_to.frame(iframe)checkbox = driver.find_element(By.NAME, "scroll_checkbox")assert _in_viewport(driver, checkbox)def _in_viewport(driver, element):script = ("for(var e=arguments[0],f=e.offsetTop,t=e.offsetLeft,o=e.offsetWidth,n=e.offsetHeight;\n""e.offsetParent;)f+=(e=e.offsetParent).offsetTop,t+=e.offsetLeft;\n""return f<window.pageYOffset+window.innerHeight&&t<window.pageXOffset+window.innerWidth&&f+n>\n""window.pageYOffset&&t+o>window.pageXOffset")return driver.execute_script(script, element)

操作span類型元素

實(shí)際項(xiàng)目中可能會(huì)遇到span類型元素,針對(duì)此類型元素,有一些特殊的操作

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>span類型元素測(cè)試</title>
</head>
<body><span id="span_id">span的文本</span>
</body>
</html>

通過id來定位元素,獲取span的文本

from selenium import webdriver
import os'''
定位元素,通過text取文本
'''
driver = webdriver.Chrome()
html_file = 'File:///' + os.getcwd() + os.sep + 'myhtml.html'
driver.get(html_file)
ele = driver.find_element('id','span_id')
print(ele.text)
driver.quit()

通過JavaScript修改標(biāo)簽的文本

from selenium import webdriver
from time import sleep
import os'''
通過js的方式修改span中間的值
js = 'document.getElementById("span_id").innerText="aaaa"'
'''
driver = webdriver.Chrome()
html_file = 'File:///' + os.getcwd() + os.sep + 'myhtml.html'
driver.get(html_file)
sleep(2)
js1 = "document.getElementById('span_id').innerText='aaa'"
driver.execute_script(js1)
sleep(2)
driver.quit()
http://www.risenshineclean.com/news/63415.html

相關(guān)文章:

  • 鄭州旅游網(wǎng)站搭建網(wǎng)站流量分析
  • 食品營(yíng)銷型網(wǎng)站建設(shè)全能搜
  • 天河移動(dòng)網(wǎng)站建設(shè)新聞?lì)^條今日新聞
  • 江蘇城鄉(xiāng)建設(shè)廳官方網(wǎng)站找關(guān)鍵詞的三種方法
  • 網(wǎng)站建設(shè)開發(fā)文檔湖北網(wǎng)絡(luò)營(yíng)銷網(wǎng)站
  • 天津企業(yè)網(wǎng)站制作公司網(wǎng)絡(luò)推廣公司
  • 專注高密做網(wǎng)站哪家強(qiáng)滄州seo推廣
  • 公司做網(wǎng)站要花多少錢怎么宣傳網(wǎng)站
  • iis5.1發(fā)布網(wǎng)站建設(shè)一個(gè)網(wǎng)站的具體步驟
  • 國(guó)外財(cái)經(jīng)網(wǎng)站是怎么做的天津短視頻seo
  • wordpress 子網(wǎng)站重命名微信指數(shù)
  • 購物平臺(tái)有哪些比較火北京百度推廣優(yōu)化排名
  • 三門峽市建設(shè)局官方網(wǎng)站seo技術(shù)培訓(xùn)山東
  • 今日疫情新聞發(fā)布會(huì)直播手機(jī)游戲性能優(yōu)化軟件
  • 動(dòng)態(tài)網(wǎng)站中如何做項(xiàng)目欄六盤水seo
  • 重慶婦科醫(yī)院免費(fèi)咨詢武漢谷歌seo
  • 江蘇網(wǎng)站開發(fā)百度人工服務(wù)電話
  • 萬網(wǎng)主機(jī) 建網(wǎng)站推廣網(wǎng)站排名優(yōu)化seo教程
  • 深圳品牌醫(yī)療網(wǎng)站建設(shè)百度趨勢(shì)搜索
  • 福州網(wǎng)站建設(shè)兼職網(wǎng)絡(luò)營(yíng)銷專業(yè)介紹
  • 公司的國(guó)外網(wǎng)站怎么建新品怎么刷關(guān)鍵詞
  • 哈爾濱建設(shè)網(wǎng)站官網(wǎng)網(wǎng)站在線客服系統(tǒng) 免費(fèi)
  • 陜西西安最新疫情廣州seo效果
  • 外貿(mào)汽車網(wǎng)站有哪些互聯(lián)網(wǎng)營(yíng)銷模式有哪些
  • 渝中網(wǎng)站建設(shè)成都網(wǎng)絡(luò)營(yíng)銷推廣公司
  • 中國(guó)流量最大的網(wǎng)站排行百度推廣開戶流程
  • 電子商務(wù)網(wǎng)站建設(shè)的核心是免費(fèi)收錄網(wǎng)站提交
  • 可以做問卷掙錢的網(wǎng)站怎么在百度發(fā)布免費(fèi)廣告
  • 為什么搜索不到剛做的網(wǎng)站如何做網(wǎng)絡(luò)推廣人員
  • javaweb在線音樂網(wǎng)站開發(fā)seo是什么職業(yè)