【问题标题】:Div covering blank space as well as element so is seemingly unclickable (Python Selenium)覆盖空白空间和元素的 Div 似乎无法点击(Python Selenium)
【发布时间】:2020-05-01 12:58:33
【问题描述】:

请帮忙,因为这让我发疯了。

这应该很简单——点击一个元素。但是对于我的生活,我找不到办法做到这一点。

我可以用我尝试过的每种方法找到它,但我似乎无法点击它。我试过按类名,按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']"));

【问题讨论】:

标签: javascript python html python-3.x selenium


【解决方案1】:

你需要定位<span>标签的文本:

xpath = "//div[@class='ok']/span[contains(., 'OK')]";

browser.find_element_by_xpath(xpath);

我仍然收到元素不可交互错误?

您需要“等待”元素可点击。浏览器和 Selenium 之间的竞争条件可能会导致元素在您能够单击之前位于 DOM 中,例如,如果您有一个淡入对象的动画。

xpath = "//div[@class='ok']/span[contains(., 'OK')]";
wait = WebDriverWait(browser, 10);
okButton = wait.until(EC.element_to_be_clickable(xpath));

okButton.click();

【讨论】:

  • @bboooooyintheuk:我更新了我的答案。您需要使用 WebDriverWait 对象等到元素可点击后再点击。
  • 嘿,不得不稍微调整一下代码,但我得到了TypeError: find_element() argument after * must be an iterable, not WebElement?我的代码:xpath = browser.find_element_by_xpath("//div[@class='ok']/span[contains(., 'OK')]"); wait = WebDriverWait(browser, 10); okButton = wait.until(EC.element_to_be_clickable(xpath)); okButton.click();
  • 谢谢。我解决了我的问题。我写的 Python 不多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-27
  • 1970-01-01
  • 1970-01-01
  • 2021-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多