功能:
def twoclicks(idoutter,idinner):
wait = WebDriverWait(driver, 20)
wait.until(EC.element_to_be_clickable((By.XPATH, "//input[contains(@id," + idoutter + ") and @value='...']"))).click()
sleep(5)
wait.until(EC.element_to_be_clickable((By.ID, idinner))).click()
此功能用于单击元素,然后在几秒钟后弹出一个窗口,然后单击弹出窗口中的元素。
尽管我尝试在函数中添加sleep()
,但我仍然遇到该错误,并且不一致,因为有时我会收到,而其他人则不会。
我以前的功能是:
def twoclicks(idoutter,idinner):
outter = driver.find_element_by_xpath("//input[contains(@id," + idoutter + ") and @value='...']")
outter.click()
sleep(10)
driver.find_element_by_id(idinner).click()
sleep(7)
虽然我的第二个函数是一个不好的实践,第一个函数应该是一个改进,但是我没有使用第二个函数来解决该异常,但是我该如何调整我的第一个共享函数以消除该错误。 / p>
请注意,代码是对类似功能的连续调用:
twoclicks("'button1'", 'button2')
twoclicks("'button3'", 'button4')
div遮盖了它:
<div class="rich-mpnl-mask-div-opaque rich-mpnl-mask-div" id="PWBFormID:managerModalPanelDiv" style="z-index: -1;"><button class="rich-mpnl-button" id="PWBFormID:managerModalPanelFirstHref"></button></div>
在html中(检查时)为灰色。
我看到许多方法,例如使用execute_script()
来阻止div与上面的共享类,但是问题是我正在使用它的一个功能,并且有数十个按钮不会出现该问题或可能具有它具有不同的类,这使得摆脱这种情况而无需在twoclicks()
函数外部逐个案例地手动编写代码非常困难。
答案 0 :(得分:0)
您可以尝试等到Javascript完成。请尝试以下等待方法:
#nav li {
margin: 0 5px;
padding: 0 0 8px;
float: right;
position: relative;
list-style: none;
}