如何使用Selenium Webdriver和Python获取子属性?

时间:2018-02-14 23:43:34

标签: python selenium selenium-webdriver

我想抓住孩子的属性。我在Chrome中检查了我的元素,并看到了以下代码:

<div class="input-wrapper">
  <ion-label style="text-overflow: ellipsis; display; block; overflow: hidden;white-space: nowrap;" class="label label-md" id="lbl-80" producttypeid="39553">Item 1</ion-label>

我需要的属性是&#34; producttypeid&#34;。

当我右键单击第一行并选择其选择器时,以下命令什么都不给我:   browser.find_element_by_css_selector("cssFromChrome").get_attribute("producttypeid")

当我右键单击第二行并选择它的选择器时,我得到的选择器是#lbl-80,这对我来说不好,因为它是动态的,我需要一些静态来抓取该元素。

我还可以尝试获取该属性吗?

3 个答案:

答案 0 :(得分:0)

其中一个选项是正则表达式匹配,如果id始终以lbl-唯一开头

browser.find_element_by_css_selector("ion-label[id^='lbl-']").get_attribute("producttypeid")

另一个选择是使用孩子

browser.find_element_by_css_selector(".input-wrapper > ion-label").get_attribute("producttypeid")

答案 1 :(得分:0)

根据HTML,如果要提取子项的producttypeid属性,可以按如下方式编写函数:

def get_producttypeid(myString):
        print(driver.find_elements_by_xpath("//div[@class='producttypeid']/ion-label[@class='label label-md' and starts-with(@id,'lbl-')][.='" + myString + "']").get_attribute("producttypeid"))

现在,您可以使用所需的商品说明调用get_producttypeid()方法,例如第1项以检索producttypeid属性,如下所示:

get_producttypeid("Item 1");

答案 2 :(得分:0)

怎么样:

element = browser.find_element_by_xpath("//*[contains(@id, 'lbl') and contains(text(), 'Item 1')]").get_attribute("producttypeid")