我丢失了凭据..所以我正在创建这个新线程。
我想更改此行:
<a data-original-title="I like this faucet" href="#" class="vote-link up" data-faucet="39274" data-vote="up" data-toggle="tooltip" data-placement="top" title=""><span class="glyphicon glyphicon-thumbs-up"></span></a>
对此:
<a data-original-title="I like this faucet" href="#" class="vote-link up voted" data-faucet="39274" data-vote="up" data-toggle="tooltip" data-placement="top" title=""><span class="glyphicon glyphicon-thumbs-up"></span></a>
因此,投票设置vote-link up为vote-link up voted。
vote-link up
vote-link up voted
但是问题在于,在该站点中,有几个项目需要投票,并且元素“数据水龙头”发生了变化。如果我使用此脚本:
from selenium import webdriver driver = webdriver.Firefox() driver.get("linkurl") element = driver.find_element_by_css_selector(".vote-link.up") element_attribute_value = element.get_attribute("data-faucet") if element_attribute_value == "39274": print ("Value: {0}".format(element_attribute_value)) driver.quit()
但是它不显示任何内容,因为第一个属性值具有另一个数字。如何用输入的data-faucet元素个数选择行,所以可以替换为vote-link up voted?
data-faucet
我只能做这种selenium吗?有没有不使用真正的浏览器的另一种方法?
无论如何,这是网页的结构:
<html> <head></head> <body role="document"> <div id="static page" class="container-fluid"> <div id="page" class="row"></div> <div id="faucets-list"> <tbody> <tr class=""></tr> <tr class=""></tr> <tr class=""></tr> <tr class=""></tr> # an infinite number of nodes, until there's mine <tr class=""> <td class="vote-col"> <div class="vote-box"> <div class="vote-links"> <a class="vote-link up" data-original-title="I like this faucet" href="#" data-faucet"39274" data-vote"up" data-toggle"tooltip" data-placement="top" title=""></a>
该网站是这样的:https://faucetbox.com/en/list/BTC
来自评论:
您是否要与具有data-faucet属性值的元素进行交互39274? 兴高采烈!就是我想做的!
您是否要与具有data-faucet属性值的元素进行交互39274?
39274
兴高采烈!就是我想做的!
您应该尝试使用css_selector以下方法:
css_selector
element = driver.find_element_by_css_selector(".vote-link.up[data-faucet = '39274']")
好的..现在,如果我在print(element)终端上显示了,它实际上选择了一些东西:<selenium.webdriver.remote.webelement.WebElement (session="d54ae232-6d42-455f-a130-097be89adf1e", element="{96385594-1725-4843-bfed-d5a4e7b9af41}")>.现在,我已经选择了它,如何将“ vote- link up”替换为“ vote-link up polled”?
<selenium.webdriver.remote.webelement.WebElement (session="d54ae232-6d42-455f-a130-097be89adf1e", element="{96385594-1725-4843-bfed-d5a4e7b9af41}")>.
您可以class使用execute_script()以下方法替换属性值:-
class
execute_script()
driver.execute_script("arguments[0].setAttribute('class','vote-link up voted')", element)