我正在开发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\u脚本值。我应该动态地获取值。你能帮帮我吗? 如果您能建议一种方法,我可以通过类名找到元素并执行onclick方法。或者像我提到的那样; 我可以通过类名找到元素,如果我可以得到与元素关联的代码(HTML),那么我可以执行driver.execute\u脚本。 你能提出一个前进的方向吗。 多谢各位
诱导
WebDriverWait
和element_to_be_clickable
()并跟随定位器Xpath:
CSS选择器:
您需要导入以下库
相关问题 更多 >
编程相关推荐