当前位置: 首页 > 面试题库 >

如何使用selenium更改元素类属性值

马弘益
2023-03-14
问题内容

我丢失了凭据..所以我正在创建这个新线程。

我想更改此行:

<a data-original-title="I&nbsp;like&nbsp;this&nbsp;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&nbsp;like&nbsp;this&nbsp;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 upvote-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

我只能做这种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

兴高采烈!就是我想做的!

您应该尝试使用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”?

您可以class使用execute_script()以下方法替换属性值:-

driver.execute_script("arguments[0].setAttribute('class','vote-link up voted')", element)


 类似资料:
  • 我是自动化的新手。我正在尝试自动化一个网页,有一个文本字段,我必须在其中输入一些文本,我尝试了driver.findElement(by.xpath(“ElemNT的XPath”).sendkeys(“value”);但这不起作用,所以我尝试通过Javascript driver.executeJavaScript(“arguments[0].value='100';”,“element path

  • 问题内容: 如何使用WebDriverWait等待属性更改? 在我的AUT中,我必须等待按钮被启用后才能继续,但是不幸的是,由于开发人员对页面进行编码的方式,我无法使用WebElement的isEnabled()方法。开发人员正在使用一些CSS来使按钮看起来像已禁用,因此用户无法单击它,并且isEnabled方法始终为我返回true。因此,我要做的就是获取属性“ aria-disabled”,并检

  • 问题内容: 我有以下代码 如何将标签替换为标签,但保留所有其他属性和信息? 问题答案: 这是使用jQuery的一种方法: 更新 ,这是一个插件:

  • 问题内容: 如何使用JavaScript 响应事件来更改HTML元素的类? 问题答案: 更改类的现代HTML5技术 现代浏览器添加了 classList , 该类 提供了一些方法,可以在不需要库的情况下更轻松地操作类: 不幸的是,尽管有一些垫片可以将其支持添加到IE8和IE9中,但这些功能在v10之前的Internet Explorer中无法使用。但是,它越来越受到支持。 简单的跨浏览器解决方案

  • 问题内容: 如何使用JavaScript 响应事件来更改HTML元素的类? 问题答案: 更改类的现代HTML5技术 现代浏览器添加了classList ,该类提供了一些方法,可以在不需要库的情况下更轻松地操作类: 不幸的是,尽管有一些垫片可以将其支持添加到IE8和IE9中,但这些功能在v10之前的InternetExplorer中无法使用,可从此页面获得。但是,它越来越受到支持。 简单的跨浏览器解

  • 如何使用WebDriverWait等到属性更改? 在我的AUT中,我必须等待一个按钮被启用后才能继续,不幸的是,由于开发人员编码页面的方式,我不能使用WebElement的isEnabled()方法。开发人员正在使用一些CSS来使按钮看起来像是被禁用的,这样用户就不能点击它,并且方法isEnabled对我来说总是返回true。所以我要做的就是获得属性“aria-disabiled”,检查文本是“t