我正在研究 Python、Selenium 和 Chrome 驱动程序。我有一个动态网站,每次网站加载时 ID 都会更改,因此我不能使用 Xpath。但我可以使用类名。我可以按如下方式上课;以下是网站的代码。
<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。你能建议一个前进的方向吗?谢谢