使用oncli的Python硒

2024-10-03 11:22:33 发布

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

我在python中使用selenium,无法让它找到并选择ok按钮。这是我试图使用的代码,它没有找到按钮。在

SubmitElem = driver.find_element_by_name('ctl00$PlaceHolderMain$ctl01$RptControls$btnOK')

SubmitElem.submit()

这是网页代码

^{pr2}$

对我做错了什么有什么建议吗?我找到了一些添加onclick*=的建议,但似乎没有起作用。在


Tags: 代码namebydriverseleniumokelementfind
2条回答

以下是您问题的答案:

根据您提供的HTML,您可以考虑以下选项:

  1. 可以考虑基于name构造一个xpath,如下所示:

    SubmitElem = driver.find_element_by_xpath("//input[@name='ctl00$PlaceHolderMain$ctl01$RptControls$btnOK']")
    SubmitElem.submit()
    
  2. 您也可以尝试基于id的不同的xpath,如下所示:

    SubmitElem = driver.find_element_by_xpath("//input[@id='ctl00_PlaceHolderMain_ctl01_RptControls_btnOK']")
    SubmitElem.submit()
    
  3. 或者,也可以考虑调用click()方法,而不是submit()方法。在

    SubmitElem.click()
    
  4. 同样,在我看来,id和{}是动态的,因为存在JavaScript和AJAX调用。在这种情况下,可以考虑构造一个动态xpath,如下所示:

    SubmitElem = driver.find_element_by_xpath("//input[starts-with(@id, 'ctl00')]")
    SubmitElem.submit()
    
  5. 您可以考虑构造一个动态css_selector,如下所示:

    SubmitElem = driver.find_element_by_css_selector("input[id^='ctl00']")
    SubmitElem.submit()
    
  6. 最后,如果您看到NoSuchElementExceptionElementNotVisibleException,您可以考虑诱导一些{},如下所示:

    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[starts-with(@name, 'ctl00')]")))
    driver.find_element_by_css_selector("input[name^='ctl00']").click()
    

There are total 6 suggested locators to identify the element along with different other options.

如果这回答了你的问题,请告诉我。在

如前所述,如果元素在iframe中,则需要switch contexts。另外,如果元素需要时间在DOM上显示,因为它是由JavaScript动态呈现的,那么您可能需要waits。您基本上希望等到元素出现在页面上,然后再对其执行操作。在

来自Selenium文档:

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "myDynamicElement"))
)

相关问题 更多 >