当前位置: 首页 > 知识库问答 >
问题:

在Selenium中从Javascript弹出窗口获取元素

萧辰沛
2023-03-14

我正在使用Selenium从一个在线数据库中提取结果。然而,一旦我选择了我的结果并去导出它们,一个弹出窗口就会出现。通常,我会将框架切换到这个窗口,但它似乎是javascript生成的。当弹出窗口中有元素时,具体名称会不断变化。例如,有一个submitButton id标记。然而,它总是附加着不同结尾。例如,它将是id=“SubmitButton_15BB0B69431”,但下一次它将是完全不同的东西,例如id=“SubmitButton_15BB0C03E8E”。因此,我通常通过ID或CSS或XPATH查找的方法不起作用。

我如何处理这个窗口来选择我需要的元素?我可以用某种方法获得弹出窗口的页面源吗?

到目前为止我拥有的代码如下:

for i in listofpa:
try:
    driver.find_element_by_xpath(i).click()

    driver.find_element_by_css_selector('#mainContentRight > div.pagination > ul > li:nth-child(13) > a').click()

except:
    pass
time.sleep(5)
window_before = driver.window_handles[0]
driver.find_element_by_id("tsMore").click()
try:
    driver.find_element_by_css_selector('#saveExportLink_6').click()
    window_after = driver.window_handles[1]
    driver.switch_to_window(window_after)
    html = driver.page_source()
    print html

共有1个答案

呼延光明
2023-03-14

在xpath中,我认为您可以尝试//*[contains(@id,'submitbutton_')]//*[starts-with(@id,'submitbutton_')]来定位元素

 类似资料:
  • 所以我正在c#winform中使用硒火狐web驱动程序,我在下面有这段代码来获取弹出窗口的句柄,当您单击“webtraffic_popup_start_button”时显示,它应该获得弹出窗口的句柄,但弹出句柄与当前句柄相同。 任何帮助将不胜感激 这就是弹出式菜单的样子。

  • 问题内容: 我不确定seleniumwebdriver是否可以处理Javascript警报/弹出窗口。 我有一个类似的场景: 1.用户上传一个xls文件,然后单击“上传”按钮 2.将显示“警报/弹出窗口”。在窗口上单击“确定” 能够自动执行上述方案,但是在运行脚本时会显示“警报/弹出”窗口。 无论如何,他们可以解决JavaScript警报/弹出窗口的解决方法吗? 问题答案: 您也可以尝试 等待警报

  • 问题内容: 如果我的问题听起来很重要,我会事先道歉,我在QA和Selenium中非常陌生。 我正在使用Java和Selenium编写测试,在测试的一个步骤中,当我单击一个按钮应该打开另一个窗口,但Chrome阻止了弹出窗口时,我可以启用Selenium弹出窗口吗? 问题答案: 好了,您需要使用自定义配置初始化,这将禁用该标志来阻止弹出窗口。在此站点上,它的命令行开关是。因此,使用和,您可以使用函数

  • 问题内容: 我正在使用Selenium Webdriver自动执行网页。我无法使用简单元素定位器方法在模式弹出窗口中单击按钮。 例: 打开www.walmart.com 在搜索框中输入电视。 选择一些电视,然后单击“添加到购物车” 现在出现一个弹出窗口,其中有“签出”按钮。我需要点击此“结帐”按钮。 我尝试了switchTo()窗口句柄,也尝试了switchTo()框架,但没有任何效果。 问题答案

  • 问题内容: 我需要在弹出窗口(使用)关闭之前执行一些操作。 像这样的东西会很好: 我该如何实现? 问题答案: 只要弹出窗口的url与父 页面 位于同一个域中, 您的示例就会起作用,并且您将事件更改为小写:

  • 完成表单并点击注册按钮后,我得到一个弹出的信息消息(模态),消息中有close(X)和OK按钮和标题:在ABC Project下,显示了以下内容&通知用户注册成功的文本。 我尝试了几种方法来点击这个弹出窗口中的OK按钮,但都没有成功: 附加提示: null 我很感激你给我的提示和支持谢谢