【问题标题】:Selenium Python : eliminating text from child element using find_element_by_css_selector() methodSelenium Python:使用 find_element_by_css_selector() 方法从子元素中消除文本
【发布时间】:2015-12-23 00:57:08
【问题描述】:

在使用 Python 的 Selenium 中,我一直在尝试从具有子元素的 DIV 选择器中选择文本。代码如下所示:-

<div class="empty-cart-message">
 There are no items in this cart.<br>
<button class="btn btn-blue close continue-button continue-empty-btn tmargin10">Continue Shopping</button> 
</div>

我需要文本“此购物车中没有商品”。 only ,我正在使用find_element_by_css_selector() 方法。

我面临的问题是,除了我需要的文本之外,它还获取按钮标签内的文本。我使用的代码如下所示:-

cart_status=driver.find_element_by_css_selector("div.empty-cart-message").text

if(assertEqual("There are no items in this cart", cart_status)):
   cont_btn=driver.find_element_by_css_selector("button.continue-empty-bin")
   cont_btn.click()

我找不到任何可以直接从我使用的方法中消除/取消选择“按钮”文本的内容。

【问题讨论】:

    标签: python-2.7 selenium methods selenium-webdriver css-selectors


    【解决方案1】:

    您可以使用以下 xpath:

    //div[@class='empty-cart-message' ]/child::text()
    

    但是,目前 selenium 不支持对象(因为它不是 webelement),您可以通过 Python javascript executor 运行:

    returnText = driver.execute_script("return  document.evaluate(\"//div[@class='empty-cart-message']/child::text()\", document, null, XPathResult.STRING_TYPE, null).stringValue;")
    

    【讨论】:

    • 正如@mahsum-akbas(他在上面的回答)所说,我尝试使用javascript executor。但是,方法 driver.execute_script()返回no value
    • 我在本地尝试了相同的 html 和 python,并且可以在输出中看到文本。
    • 我做了同样的@mahsum-akbas !该脚本正在运行且未显示任何错误,但 execute_script() 返回一个空白 String。是否需要在您可能正在使用的特定版本的 Selenium 或 Python 或任何其他浏览器上进行测试?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多