5

我正在学习如何使用 Selenium,python并尝试在http://www.google.comcss上修改样式。例如,该页面上的 。我想修改课程。<span class="gbts"> ....</span>gbts

browser.execute_script("q = document.getElementById('gbts');" + "q.style.border = '1px solid red';")

是否有一个 API 方法称为getElementByClass('gbts')

4

2 回答 2

4

您正在询问如何使用 JavaScript 通过它的 CSS 类获取元素。真的与 Selenium 无关。

无论如何,您有几个选择。您可以首先使用 Selenium 获取元素(所以在这里,是的,Selenium 是相关的):

element = driver.find_element_by_class_name("gbts")

已经引用了这个元素,然后很容易给它一个边框:

driver.execute_script("arguments[0].style.border = '1px solid red';")

(注意,arguments[0]

如果你真的必须单独使用 JavaScript 和 JavaScript,那么你的能力非常有限。getElementByClassName这是因为JavaScript中没有函数。仅getElementsByClassName这意味着它将返回与给定类匹配的元素列表。

因此,您必须专门针对要更改的列表中返回的元素。如果我想更改具有类的第一个元素gbts,我会这样做:

driver.execute_script("document.getElementsByClassName('gbts')[0].style.border = '1px solid red';")

我建议你选择第一个选项,这意味着你让 Selenium 为你做腿部工作。

于 2013-11-08T10:23:20.653 回答
1

您可能会发现另一个为您提供更多灵活性的纯 JavaScript 选项是使用document.querySelector().

它不仅会自动为您从结果集中选择第一项,而且还会说您有多个具有该类名称的元素,但是您知道某个父元素中只有一个具有该类名称的元素,您可以限制在该父元素内进行搜索,例如document.querySelector("#parent-div .gbts").

有关详细信息,请参阅(Mozilla 文档)

于 2015-01-29T05:51:09.017 回答