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

使用Python和Selenium,我无法在覆盖模型中获得元素

鄂曦之
2023-03-14

在我的测试中,我必须单击一个按钮将一个项目添加到购物车中。此时会出现一个模型对话框,允许一些选项和链接,我正在尝试单击其中一个;查看购物车和结帐。

我试图用find_element_by查找元素的每一次尝试都失败了。不管我如何尝试找到它;ID,类,链接文本等。

我尝试过在try/catch语句中设置WebDriver等待,看看暂停将模型添加到页面是否会有所帮助,但没有。我也检查过是否有另一个窗口或框架可以切换,但只有一个窗口。

有没有其他方法来完成我需要的工作,或者通过故障排除步骤来解决这个问题?

下面是Firefox展示的超文本标记语言。

<div class="summary">
    <dl></dl>
    <a class="bb-button" href="/shopping/cart">View Cart and Checkout</a>
<div class="continue"></div>

我写的python是:

    product_details.addDocumentToCart('Printed Edition')

    try:
        WebDriverWait(self.driver, 10).until(EC.presence_of_element_located(By.CLASS_NAME, 'bb-button'))
        print 'bb-button found'
    except:
        print 'bb-button not found'

    windows = self.driver.window_handles
    print 'Windows after: ' + str(len(windows))

    element = self.driver.find_element_by_class_name('bb-button')
    element.click()

我打印出来的信息返回:

added_to_cart未找到容器和Windows之后:1

运行此操作时出现的错误是:

NoSuchElementException:消息:无法定位元素:{“方法”:“类名”,“选择器”:“bb按钮”}

共有1个答案

欧阳嘉年
2023-03-14

谢谢Mikko,有了你关于pbd.set_trace()的建议,我发现我的问题实际上是我认为被点击了但没有点击的按钮。进一步的故障排除显示,我的addDocumentToCart()方法单击了错误的元素,所以我的模型没有出现,但是没有产生错误,这让我相信事情是正常的,而事实并非如此。

 类似资料:
  • [在这里输入图像描述][1][在这里输入图像描述][2]我知道很多人都有类似的问题。我展示了很多答案,尝试了在声纳网站上给出的示例代码。那个样品工作得很好。我还显示以下链接 maven 3.0.5 请帮我解决这个问题。 下面是父模块pom文件 我真的觉得这是jacoco或Sonarqube的bug。可能它不兼容Java8之类的东西。我几乎什么都试过了。sonar java插件2.5.1不推荐使用许

  • 我正在使用Jacoco插件使用jenkins获得代码覆盖率。我能够看到代码覆盖率。当我尝试使用相同的jacoco.exec文件来生成声纳代码覆盖率时,它显示:由于没有类文件,无法对项目覆盖率进行JaCoCo分析。我使用以下声纳属性: 我正在使用SonarQube 5.3

  • 我正在使用Jenkins Jacoco Sonarqube测试我的代码。在Jenkins中,我的mvn命令是: < code > clean org . ja coco:ja coco-maven-plugin:prepare-agent install-dmaven . test . skip = false-dmaven . test . failure . ignore = true son

  • 我尝试使用Python selenium(新的)做一些自动化。不幸的是,检查特定网页的元素不仅仅是困难的。没有id可以使用,我尝试xpath。我想选择一个下拉列表,我检查这个元素,然后复制xpath,它是//*[@id="frmMain:purchase_criteria_tab"]/div[13]/div[1]/div/按钮 我的代码是: 我不明白这个元素有什么想法吗?提前谢谢你。

  • 问题内容: 不确定我在做什么错,这是我的check.js 这是我的insert.js 每当我尝试运行check.js时,都会出现此错误 编译后无法覆盖“用户”模型 。 我知道此错误是由于架构不匹配引起的,但我看不到发生了什么?我对mongoose和nodeJS很陌生。 这是我从MongoDB的客户端界面中获得的信息: 问题答案: 发生错误是因为您已经定义了一个架构,然后又在定义该架构。通常,您应该

  • 当我的单元测试通过Emma被“覆盖”时,我试图让Sonar IT代码覆盖为我工作。 我的情况: (1)我有大量使用JMockit的单元测试。删除JMockit不是一个选项。我想获得这些测试的单元测试覆盖报告。 (2)我进行了集成测试,简单地用不同的输入场景运行应用程序的核心服务器端部分(这是一个Spring web应用程序)。我想要它的代码覆盖报告。 对于第(1)部分,我选择使用Emma进行单元测