gpt4 book ai didi

python - 动态网站通过类名查找元素并使用 Selenium 和 Chrome 执行与 Python 中的类关联的 onclick 方法

转载 作者:太空宇宙 更新时间:2023-11-03 19:54:00 26 4
gpt4 key购买 nike

我正在研究 Python、Selenium 和 Chrome 驱动程序。我有一个动态网站,每次网站加载时 ID 都会发生变化,因此我无法使用 Xpath。但我可以使用类名。我可以按如下方式进入类(class);以下是该网站的代码。

<a class="appButton registerItemSearch-tabs-criteriaAndButtons-buttonPad-search appSearchButton appPrimaryButton appButtonPrimary appSubmitButton appNotReadOnly appIndex2" id="nodeW830" href="#" onclick="return function(me){var retVal = false; if (catHtmlFragmentCallback('W830','buttonPush',null,{asyncUpdate:true,containerSelector:'#AsyncWrapperW814',containerNodeId:'W814',success:function(html){jQuery('#AsyncWrapperW814').empty().append(html);webuiAsyncOk('#AsyncWrapperW814');}}, me) == 'skip') retVal = true;return retVal;}(this)" tabindex="118"><span class="left"></span><span class="appReceiveFocus" tabindex="-1">Search</span><span class="right"></span></a>

但是我可以执行以下操作;到达该元素。

xxx = driver.find_elements_by_class_name("appButton.registerItemSearch-tabs-criteriaAndButtons-buttonPad-search.appSearchButton.appButtonPrimary.appPrimaryButton.appSubmitButton.appNotReadOnly.appIndex2")

现在我想执行与该类关联的 onclick 方法。我也可以像下面那样这样做;

driver.execute_script("return function(me){var retVal = false; if (catHtmlFragmentCallback('W830','buttonPush',null,{asyncUpdate:true,containerSelector:'#AsyncWrapperW814',containerNodeId:'W814',success:function(html){jQuery('#AsyncWrapperW814').empty().append(html);webuiAsyncOk('#AsyncWrapperW814');}}, me) == 'skip') retVal = true;return retVal;}(this)")

但正如我所提到的,我无法对 driver.execute_script 值进行硬编码。我应该动态获取这些值。请你帮助我好吗?如果您能建议一种方法,我可以通过类名找到元素并执行 onclick 方法。或者正如我提到的;我可以通过类名找到元素,如果我可以获得与该元素关联的代码(HTML),那么我可以执行 driver.execute_script 。你能建议一个前进的方向吗?谢谢您

最佳答案

引发 WebDriverWaitelement_to_be_clickable() 以及以下定位器。

Xpath:

WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//a[.//span[text()='Search']]"))).click()

CSS 选择器:

WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"a.appButton.registerItemSearch-tabs-criteriaAndButtons-buttonPad-search.appSearchButton.appPrimaryButton.appButtonPrimary.appSubmitButton.appNotReadOnly.appIndex2"))).click()

您需要导入以下库。

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

关于python - 动态网站通过类名查找元素并使用 Selenium 和 Chrome 执行与 Python 中的类关联的 onclick 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59650817/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com