请帮忙,因为这让我发疯。
这应该很简单 - 单击一个元素。但对于我的一生,我找不到办法做到这一点。
我可以用我尝试过的每种方法找到它,但我似乎无法单击它。我尝试过通过类名、XPath 类、XPath 范围文本,我尝试过使用 javascript 强制单击。没有什么。这个蓝色的“确定”按钮似乎无法点击。
我开始认为这可能是因为 div 形状,我将其附加在图像中。看起来 div 也位于按钮的左侧,所以也许只是单击按钮旁边的空白区域(无论出于何种原因)也恰好被 div 覆盖?如果是这样,有没有办法指定点击 div 的哪一部分?
这是我尝试过的:
browser.find_element_by_class_name('ok')
browser.find_element(By.XPATH, "//div[@class='ok']")
browser.execute_script("arguments[0].click();",
WebDriverWait(browser, 10).until(EC.element_to_be_clickable
((By.Class, "ok"))))
browser.FindElement(By.XPath("//div[@class='ok']/span[@class='OK']"));
最佳答案
您需要定位 <span>
的文本标签:
xpath = "//div[@class='ok']/span[contains(., 'OK')]";
browser.find_element_by_xpath(xpath);
I get the element not interactable error still?
您需要“等待”该元素才能单击。浏览器和 Selenium 之间的竞争条件可能会导致元素在您能够单击之前就已位于 DOM 中,例如,如果您有一个淡入对象的动画。
xpath = "//div[@class='ok']/span[contains(., 'OK')]";
wait = WebDriverWait(browser, 10);
okButton = wait.until(EC.element_to_be_clickable(xpath));
okButton.click();
关于javascript - Div 覆盖空白区域和元素,因此看起来无法点击(Python Selenium),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59739903/