添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Selenium Python document.getElementsByClassName()

2 人关注

我正在使用Selenium和Python3来自动向一个网站输入数据。 我试着到处寻找如何处理在有多个元素的情况下按类选择元素的问题,但我不知道如何选择手风琴-切换[1]。在Selenium上没有任何反应,但在任何浏览器上都能正常工作。另外,有没有什么方法可以直接使用常规的javascript或jquery命令?

accordion=find_element_by_class("accordion-toggle"[1])
accordion.click()
#otheraccordion=find_element_by_css_selector("#AdvancedAddress > div.accordion-heading.in > div.accordion-toggle > span.accordionExpandCollapse")
#otheraccordion.click()
StreetNameField=driver.find_element_by_id("Advanced_FindMyParcel_PropertyStreetName")
StreetNameField.send_keys("Sherman")
ZipField=driver.find_element_by_id("Advanced_FindMyParcel_PropertyZip")
ZipField.send_keys("90201")
ZipButton=driver.find_element_by_id("btnSearchFindMyParcels")
ZipButton.click()
    
python
selenium
selenium-webdriver
automation
luis morales
luis morales
发布于 2015-03-02
3 个回答
alecxe
alecxe
发布于 2021-04-18
已采纳
0 人赞同

你实际上可以通过 document.getElementsByClassName() 的调用来使用 execute_script()

driver.execute_script("document.getElementsByClassName('accordion-toggle')[0].click();")

但我不会为了这样一个简单的任务而去执行javascript。更简单的是用find_element_by_class_name():

accordion = driver.find_element_by_class_name('accordion-toggle')
accordion.click()
    
它完美地工作了。你的两个答案都起作用了。非常感谢。
StuartLC
StuartLC
发布于 2021-04-18
0 人赞同

您要找的是 find_element(s)_by_css_selector 。- reference here - 使用css前缀'.classname'来表示该类。

e.g. to find

<div class='theClass'>
driver.find_elements_by_css_selector('.theClass')

你也可以使用By的语法。

driver.find_elements(By.CSS_SELECTOR, '.theClass')
看来问题可能更多的是为了Clicking这个元素,而不是找到它。

  • Ensure the element is visible
  • For Chrome, you may need to mimic hovering the mouse over the element before clicking this - see Actions / ActionChains MoveToElement to hover over the element.
  • For IE, you may need to ensure the browser / frame gets the focus, prior to the element Click - you may need to apply a hack like one of these.
  • 非常感谢。这也是问题的一部分。而css选择器起了作用。
    Guillermo Garcia
    Guillermo Garcia
    发布于 2021-04-18
    0 人赞同