2024-10-03 11:22:33 发布
网友
我在python中使用selenium,无法让它找到并选择ok按钮。这是我试图使用的代码,它没有找到按钮。在
SubmitElem = driver.find_element_by_name('ctl00$PlaceHolderMain$ctl01$RptControls$btnOK') SubmitElem.submit()
这是网页代码
对我做错了什么有什么建议吗?我找到了一些添加onclick*=的建议,但似乎没有起作用。在
onclick*=
以下是您问题的答案:
根据您提供的HTML,您可以考虑以下选项:
可以考虑基于name构造一个xpath,如下所示:
name
xpath
SubmitElem = driver.find_element_by_xpath("//input[@name='ctl00$PlaceHolderMain$ctl01$RptControls$btnOK']") SubmitElem.submit()
您也可以尝试基于id的不同的xpath,如下所示:
id
SubmitElem = driver.find_element_by_xpath("//input[@id='ctl00_PlaceHolderMain_ctl01_RptControls_btnOK']") SubmitElem.submit()
或者,也可以考虑调用click()方法,而不是submit()方法。在
click()
submit()
SubmitElem.click()
同样,在我看来,id和{}是动态的,因为存在JavaScript和AJAX调用。在这种情况下,可以考虑构造一个动态xpath,如下所示:
SubmitElem = driver.find_element_by_xpath("//input[starts-with(@id, 'ctl00')]") SubmitElem.submit()
您可以考虑构造一个动态css_selector,如下所示:
css_selector
SubmitElem = driver.find_element_by_css_selector("input[id^='ctl00']") SubmitElem.submit()
最后,如果您看到NoSuchElementException或ElementNotVisibleException,您可以考虑诱导一些{},如下所示:
NoSuchElementException
ElementNotVisibleException
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")) )
以下是您问题的答案:
根据您提供的HTML,您可以考虑以下选项:
可以考虑基于
name
构造一个xpath
,如下所示:您也可以尝试基于
id
的不同的xpath
,如下所示:或者,也可以考虑调用
click()
方法,而不是submit()
方法。在同样,在我看来,}是动态的,因为存在JavaScript和AJAX调用。在这种情况下,可以考虑构造一个动态
id
和{xpath
,如下所示:您可以考虑构造一个动态
css_selector
,如下所示:最后,如果您看到},如下所示:
NoSuchElementException
或ElementNotVisibleException
,您可以考虑诱导一些{如果这回答了你的问题,请告诉我。在
如前所述,如果元素在iframe中,则需要switch contexts。另外,如果元素需要时间在DOM上显示,因为它是由JavaScript动态呈现的,那么您可能需要waits。您基本上希望等到元素出现在页面上,然后再对其执行操作。在
来自Selenium文档:
相关问题 更多 >
编程相关推荐