【问题标题】:How to click on popup in Selenium?如何单击 Selenium 中的弹出窗口?
【发布时间】:2021-12-05 00:17:03
【问题描述】:

我正在使用Selenium 自动执行网络任务,并且我正在尝试搜索地址。一旦我搜索一个地址,就会出现一个弹出窗口,上面写着“你是说_____地址”,我想点击那个弹出窗口。

您可以看到我使用Selenium 输入了Stanford,并且我希望单击“您的意思是?”中弹出的第一个结果。盒子。但是,我无法点击该 webbrowser 元素。

我正在使用Selenium Python。

我尝试使用 XPath helper chrome 扩展,这使我能够确定该特定元素的 XPath 是

/html/body[@class='vsc-initialized']/form[@id='Form1']/div[@class='stickywrapper']/div[@class='tier3']/table[@class='map-container']/tbody/tr/td/div[@class='css_container']/div[@id='m_upSearch']/div[@id='m_pnlSearchTab']/div[@id='m_pnlSearch']/div[@class='css_content'][1]/div[@id='m_sfcSearch']/div[@class='searchForm']/table/tbody/tr[2]/td/table/tbody/tr[2]/td[1]/table/tbody/tr[12]/td[2]/table/tbody/tr[2]/td[2]/div/div[@class='mapSearchDialog']/ul[@class='disambiguation']/li[2]

但是,尝试在上面的那个字符串上调用 driver.find_elements_by_xpath( . ) 对我不起作用。

有什么建议吗?

提前致谢!

【问题讨论】:

  • 在这里您需要创建可以定位第一个搜索结果的自定义 Xpath。我可以提供帮助,但您必须发送完整代码,以便我可以在我的计算机上重现和解决问题。或至少发送您作为屏幕截图附加的该图片的 URL,以便我可以为您创建自定义 Xpath。

标签: javascript python html selenium


【解决方案1】:

这可能是因为元素没有被正确渲染,你试图点击它/与之交互,导致异常。

请诱导显式等待,由 WebDriverWait 实现。

xpath 也很脆弱,因为它是绝对 xpath。请使用这样的相对 xpath:

//ul[@class='disambiguation']//li[addr]

在使用之前,您应该确保它应该反映为1/11/any_number。但它必须是左侧的 1。

检查步骤:

Press F12 in Chrome -> 转到element 部分 -> 做一个CTRL + F -> 然后粘贴xpath 看看,如果你想要的element 用@ 得到高亮 987654329@匹配节点。

代码试用 1:

time.sleep(5)
driver.find_element_by_xpath("//ul[@class='disambiguation']//li[addr]").click()

代码试用 2:

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//ul[@class='disambiguation']//li[addr]"))).click()

代码试用 3:

time.sleep(5)
button = driver.find_element_by_xpath("//ul[@class='disambiguation']//li[addr]")
driver.execute_script("arguments[0].click();", button)

代码试用 4:

time.sleep(5)
button = driver.find_element_by_xpath("//ul[@class='disambiguation']//li[addr]")
ActionChains(driver).move_to_element(button).click().perform()

进口:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains

【讨论】:

    【解决方案2】:

    我看不到完整的 HTML 代码,但请从您那里检查它是否在任何框架内?如果是,则尝试首先将驱动程序控件切换到该框架,然后执行该单击操作。另外,我建议您首先尝试从该列表中捕获所有 WebElement,然后尝试通过迭代单击给定列表中的第二个项目,以便将来如果您想单击任何其他项目,您将能够轻松做到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      • 2019-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多