如果想要的文本也在单元格中,则尝试选择表格单元格中的链接文本

时间:2019-07-12 18:59:37

标签: python selenium xpath webdriverwait xpath-1.0

所以我有一个同时包含文本和链接的表格单元格。现在,此表中的每一行都有相同的文本链接超链接标题“ [Details]”,但是位置会根据您所在的行而改变。

例如,单元格将如下所示:“我想要的文本” [详细信息]

我希望能够根据该单元格中还包含哪些文本来转到正确的链接,但是在弄清楚如何在Python中进行编码时遇到了一些问题。单击该表中的一行后,它将在表中移动它的位置,因此不再使用Xpath。

这是我尝试过的:

filepath.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                  @Override
                  public void onComplete(@NonNull final Task<UploadTask.TaskSnapshot> task) {

                      if (task.isSuccessful()) {
                          final String down_url = task.getResult().getDownloadUrl().toString();

                          UploadTask p_UpTask = th_filepath.putBytes(tumb_p_byte);

                          p_UpTask.addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                              @Override
                              public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> thumb_task) {

                                  final String th_pURl = thumb_task.getResult().getDownloadUrl().toString();

                                  if (task.isSuccessful())
                                  {
                                      Map upd_us = new HashMap();
                                      upd_us.put("image",down_url);
                                      upd_us.put("th_image",th_pURl);

                                      mDbEditAcc.updateChildren(upd_us).addOnCompleteListener(new OnCompleteListener<Void>() {
                                          @Override
                                          public void onComplete(@NonNull Task<Void> task) {
                                              if (task.isSuccessful()) {
                                                  Toast.makeText(getApplicationContext(), "Successfully", Toast.LENGTH_LONG).show();
                                                  Picasso.get().load(th_pURl).into(edit_img);
                                              }
                                          }
                                      });

                                  }

                              }
                          });


                      } else {
                          Toast.makeText(getApplicationContext(), "Try again later", Toast.LENGTH_LONG).show();

                      }

                  }
              });

MyText = driver.find_element_by_xpath("//span[text()='My Desired Text']")
MyText.find_element_by_partial_link_text("Details").click()


但是我认为我需要使用 def click_me(myString): WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, "//td/span[.='" + myString + "']//following::span[2]"))).click() click_me("My Desired Text") 语句才能真正获得所需的结果。任何建议,将不胜感激。

if

1 个答案:

答案 0 :(得分:1)

由于该表由多个文本和与 Details 相同的文本组成的关联链接组成,因此您可以编写以下方法:

def click_me(myString):
        WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//td/span[.='" + myString + "']//following::span[2]"))).click()

现在,您可以使用任何所需的文本来调用此方法以单击关联的链接:

click_me("My Desired Text")
# or
click_me("My Text")
# or
click_me("Text")