2013-07-23 28 views
0

得到这个问题: 我试图找到网页上的最后一个环节:find_elements_by_partial_link_text(LINK_TEXT)硒的Python

try: 
      elems=self.br.find_elements_by_partial_link_text(category) 
    except NoSuchElementException: 
      print 'The Category Name Was Not Found'.category 
      f=open("error.log","aw") 
      f.write("Cant find category:%s\n"%category) 
      f.close() 
    elems[-1].click() 

现在对于〔实施例我有以下几类: 图书(动态数字) 有声读物(动态数字) RomanceBooks(动态数字)

而我试图找到“书籍” 我想获得第一个! (它也需要是源代码中的最后一个,所以不能从元素中选择第一个)如果我能够从书中开始选择partial_link_text并且不结束,那么这个方法可以与我的系统一起工作吗?有任何想法吗? 我不能用任何其他方法,因为这是一个非常动态的代码和大部分的东西改变了......

+0

请你澄清一点 - 你想获得最后的元素(基于你的'elems [-1]'),但你说你想要第一个 - 第一个你做的“list”还是其他的第一个? –

+0

@MarkRowlands我想获得最后一个元素(elems [-1]),但它必须以我的类别变量(Books)开始,因此它会选择以类别变量开头的元素,而不是基于最后一个元素从类别开始(图书) –

+0

谢谢,我想我现在明白了一点。对不起,另一个问题是第一个问题:你使用“书籍”作为你的类别的问题,而不是仅仅提供“书籍”的列表,因为“_partial_link_text”,它还包括“AudioBooks”和“RomanceBooks”? –

回答

1

您可以使用类似这样

xpath="//a[starts-with(text(), %s)]" % category 
elems = self.br.find_elements_by_xpath(xpath) 
elem = elems[-1] 

的XPath会做工作的starts-with部分,和elems[-1]将做其余的

+0

这是一个复选框我试图点击这里是html代码,你认为它会为此工作吗?''Books (206)' –

+0

也启动基本上类别为 –

+0

否,这个例子不起作用,但是你可以用xpath来玩,例如,如果每一对'input'和'a'都包含在某个节点中(比如'div'或其他)你可以使用另一个xpath,就像这样:'xpath =“// a [starts-with(text(),%s)] /../输入”%category“,你会看到复选框想。 – PukeCloud