使用XPath获取第一个元素并传入值

时间:2017-01-05 15:21:20

标签: python selenium xpath

使用XPath选择第一个下拉列表并传入值,然后找到第二个下拉列表并传入值。这就是我到目前为止所拥有的。

class pageCommon(Page):

    def __init__(self, driver, fieldName):

        self.driver = driver
        try:
            self.text = self.driver.find_element_by_xpath('//tr/th//*[text()="%s"]' % fieldName)
        except:
            self.text = self.driver.find_element_by_xpath('//tr/th//*[text()="%s"]' % (fieldName + ":"))


    # take action - to edit any page[enterValue variable has to be a list]
    def take_action(self, enterValue):
        # ensures the edit mode is on
        try:
            driver.find_element_by_id("edit").click()
        except:
            pass

        # currently the it is hardcoded. 
        self.text.find_element_by_xpath('./..//..//./td/select)[2]')
        Select(self.text.find_element_by_xpath('./..//..//./td/select)[2]')).select_by_visible_text(enterValue)

如果我使用这种方法它不起作用。可能XPath不正确,但是当我在没有启动它的情况下硬编码完整的xpath时,它就可以了。这是我使用的XPath,它使它工作。

//tr/th//*[text()="Currency:"]/..//..//./td/select)[2]

此外,由于enterValue参数是一个列表。如果用户通过,我们说["ENG", "AUS"],那么它应该为第一个下拉列表选择ENG,对于第二个下拉列表,它应该选择AUS。不知道如何处理这个问题。

我正在努力解决两件事:

  1. 获取正确的XPath
  2. 添加循环,因此我没有选择订单号的硬编码
  3. 这就是它的样子

    enter image description here

    这就是下拉的样子:

    enter image description here

    以下是第一个下拉列表的HTML代码:

    <tr>
      <th valign="top"  class="Form">
        <label for="currencyid">Currency:</label>
      </th>
        <td  id="sf_60_td" class="Form">
          <table cellspacing=0 cellpadding=0>
            <tr>
              <td style="padding-left:5px;padding-right:5px">1</td>
              <td>
                <select name="currencyid" id="currencyid" onchange="updateForEx(this.form)" class="XSmall">
                  <option value=USD selected >USD</option>
                  <option value=CAD>CAD</option>
                  <option value=FRCA>FRCA</option>
                  <option value=MXN>MXN</option>
                  <option value=EUR>EUR</option>
                  <option value=GBP>GBP</option>
                  <option value=HKD>HKD</option>
                  <option value=JPY>JPY</option>
                  <option value=INR>INR</option>
                  <option value=CLP>CLP</option>
                  <option value=PEN>PEN</option>
                  <option value=ZAR>ZAR</option>
                  <option value=CNY>CNY</option>
                  <option value=NAD>NAD</option>
                  <option value=TRY>TRY</option>
                  <option value=AUD>AUD</option>
                  <option value=BRL>BRL</option>
                  <option value=COP>COP</option>
                  <option value=CYP>CYP</option>
                  <option value=CZK>CZK</option>
                  <option value=DKK>DKK</option>
                  <option value=EGP>EGP</option>
                  <option value=ETB>ETB</option>
                  <option value=FJD>FJD</option>
                  <option value=GHC>GHC</option>
                  <option value=HUF>HUF</option>
                  <option value=IDR>IDR</option>
                  <option value=ILS>ILS</option>
                  <option value=JOD>JOD</option>
                  <option value=KZT>KZT</option>
                  <option value=KES>KES</option>
                  <option value=KWD>KWD</option>
                  <option value=LBP>LBP</option>
                  <option value=MYR>MYR</option>
                  <option value=MAD>MAD</option>
                  <option value=NZD>NZD</option>
                  <option value=TWD>TWD</option>
                  <option value=NOK>NOK</option>
                  <option value=OMR>OMR</option>
                  <option value=PKR>PKR</option>
                  <option value=PHP>PHP</option>
                  <option value=PLN>PLN</option>
                  <option value=QAR>QAR</option>
                  <option value=RUB>RUB</option>
                  <option value=SAR>SAR</option>
                  <option value=SGD>SGD</option>
                  <option value=SKK>SKK</option>
                  <option value=KRW>KRW</option>
                  <option value=SEK>SEK</option>
                  <option value=CHF>CHF</option>
                  <option value=THB>THB</option>
                  <option value=TTD>TTD</option>
                  <option value=TND>TND</option>
                  <option value=UAH>UAH</option>
                  <option value=AED>AED</option>
                  <option value=VND>VND</option>
                </select>
              </td>
              <td style="padding-left:5px;padding-right:5px">=</td>
              <td style="padding-left:5px;padding-right:5px">
                <input type="text" class="textreadonly" name="exrate" id="exrate" value="1.0" style="text-align:right;width:60px"/>
              </td>
              <td>
                <select name="excur" id="excur" onchange="updateForEx(this.form)" >
                  <option value=USD>USD</option>
                  <option value=CAD selected >CAD</option>
                  <option value=FRCA>FRCA</option>
                  <option value=MXN>MXN</option>
                  <option value=EUR>EUR</option>
                  <option value=GBP>GBP</option>
                  <option value=HKD>HKD</option>
                  <option value=JPY>JPY</option>
                  <option value=INR>INR</option>
                  <option value=CLP>CLP</option>
                  <option value=PEN>PEN</option>
                  <option value=ZAR>ZAR</option>
                  <option value=CNY>CNY</option>
                  <option value=NAD>NAD</option>
                  <option value=TRY>TRY</option>
                  <option value=AUD>AUD</option>
                  <option value=BRL>BRL</option>
                  <option value=COP>COP</option>
                  <option value=CYP>CYP</option>
                  <option value=CZK>CZK</option>
                  <option value=DKK>DKK</option>
                  <option value=EGP>EGP</option>
                  <option value=ETB>ETB</option>
                  <option value=FJD>FJD</option>
                  <option value=GHC>GHC</option>
                  <option value=HUF>HUF</option>
                  <option value=IDR>IDR</option>
                  <option value=ILS>ILS</option>
                  <option value=JOD>JOD</option>
                  <option value=KZT>KZT</option>
                  <option value=KES>KES</option>
                  <option value=KWD>KWD</option>
                  <option value=LBP>LBP</option>
                  <option value=MYR>MYR</option>
                  <option value=MAD>MAD</option>
                  <option value=NZD>NZD</option>
                  <option value=TWD>TWD</option>
                  <option value=NOK>NOK</option>
                  <option value=OMR>OMR</option>
                  <option value=PKR>PKR</option>
                  <option value=PHP>PHP</option>
                  <option value=PLN>PLN</option>
                  <option value=QAR>QAR</option>
                  <option value=RUB>RUB</option>
                  <option value=SAR>SAR</option>
                  <option value=SGD>SGD</option>
                  <option value=SKK>SKK</option>
                  <option value=KRW>KRW</option>
                  <option value=SEK>SEK</option>
                  <option value=CHF>CHF</option>
                  <option value=THB>THB</option>
                  <option value=TTD>TTD</option>
                  <option value=TND>TND</option>
                  <option value=UAH>UAH</option>
                  <option value=AED>AED</option>
                  <option value=VND>VND</option>
                </select>
              </td>
              <td style="padding-left:5px;padding-right:5px">
                <input type=hidden name="examt" id="examt" value="0.0"/>2016-12-20 11:30</td>
            </tr>
          </table>
        </td>
      </tr>
    

1 个答案:

答案 0 :(得分:1)

您能否发布HTML代码?对于第二个问题,我假设下拉的数量等于或大于列表中项目的数量。 您可以遍历列表以从列表中选择一个项目,然后在下拉列表中选择。 例如for counter in range(0,Len(list_name)): item=list_name[counter]