使用python selenium从HTML页面选择项目

2024-10-03 06:18:08 发布

您现在位置:Python中文网/ 问答频道 /正文

祝你今天愉快。 我正试图完成我的一个街区,我被困在里面。 我试过下面的代码,但没有成功。只有前两个驱动程序工作,我的目标是在psiToolPan div中选择“Daily report Dec 2019”选项。非常感谢。你知道吗

enter image description here

这是我的街区:

elements = driver.find_elements_by_class_name("smr")
for e in elements:
    e.click()
elements = driver.find_elements_by_class_name("smr-more")
for e in elements:
    e.click()    

select_obj = 
select(driver.find_element_by_xpath("//div[@class='smr']//div[@class='smr- 
more']//strong[@id='psiTool']"))
select_obj.select_by_visible_text('All')

# courses_button = driver.find_element_by_name('psiTool').click()    
# courses_button = driver.find_element_by_id('psiToolPan').click()
# courses_button = driver.find_element_by_id('templateList').click()

driver.find_element_by_link_text('Selecting a template').click();
# searchElem.send_keys('Daily report Dec 2019')     

Tags: namedividbydriverbuttonelementselement
3条回答
WebDriverWait(driver,15).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"dashboard_iframe")))
elementclick=WebDriverWait(driver,15).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div.smr")))
driver.execute_script("arguments[0].click();", elementclick)
elementclick=WebDriverWait(driver,15).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div.smr-more")))
driver.execute_script("arguments[0].click();", elementclick)
courses_button = driver.find_element_by_id('psiTool').click()
courses_button = driver.find_element_by_id('psiToolPan').click()

driver.find_element_by_xpath("//option[@title='Daily report Dec 2019'][@value='8956']").click()

根据你问题的质量,答案是:

https://selenium-python.readthedocs.io/locating-elements.html

(注意:您应该使用css选择器或xpath-"//option[@title='Daily report Dec 2019'][@value='8956']"

您试图与之交互的元素位于iframe iddashboard_iframe内。 您需要先切换到iframe才能访问元素。你知道吗

诱导WebDriverWaitframe_to_be_available_and_switch_to_it() 以及 诱导WebDriverWaitelement_to_be_clickable()

WebDriverWait(driver,15).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"dashboard_iframe")))
WebDriverWait(driver,15).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div.smr"))).click()
WebDriverWait(driver,15).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div.smr-more"))).click()
element=WebDriverWait(driver,15).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"#templateList")))
select=Select(element)
select.select_by_visible_text("Daily report Dec 2019")

导入以下库以执行上述代码。你知道吗

from selenium.webdriver.support.select import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

编辑:

诱导JavaScript执行器单击。你知道吗

WebDriverWait(driver,15).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"dashboard_iframe")))
elementclick=WebDriverWait(driver,15).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div.smr")))
driver.execute_script("arguments[0].click();", elementclick)
elementclick=WebDriverWait(driver,15).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"div.smr-more")))
driver.execute_script("arguments[0].click();", elementclick)
element=WebDriverWait(driver,15).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"#templateList")))
select=Select(element)
select.select_by_visible_text("Daily report Dec 2019")

相关问题 更多 >