0

我正在尝试对我的服务器的功能进行一些测试以拥有多个访问者并确保我可以处理流量,所以我选择使用 selenium 和 python,因为我最熟悉它们

这是我到目前为止所拥有的(正在进行的工作):

from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://www.on-demandlogistics.com/home.html")

element = WebDriverWait(driver, 10).until(
    ec.element_to_be_clickable((By.CLASS_NAME, "test"))
)
element.click()

我已经尝试过 CSS Selector、Xpath,甚至在 HTML 代码中创建了特殊的类,但我无法让 selenium 跟随我想要的链接

我想关注登录然后我会从那里继续

HTML 如下,但请随意点击链接 ( http://www.on-demandlogistics.com/home.html )

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <body>
    <head>
      <meta charset="utf-8">
      <meta name="description" content="This is the description">
      <link rel="stylesheet" href="style.css">
      <title>On-Demand Logistics | Home</title>
  </head>
  <header>
    <nav class="nav main-nav">
      <div class="nav-grid-container">
          <div class="nav-grid-item link-img">
            <a href="mailto:slefebvre@on-demandlogistics.com">
              <img src="images/headerlogo.png" alt="">
            </a>
          </div>
          <div class="nav-grid-item">
            <a href="home.html">Home</a>
          </div>
          <div class="nav-grid-item">
            <a href="services.html">Services</a>
          </div>
          <div class="nav-grid-item">
            <a href="aboutus.html">About Us</a>
          </div>
          <div class="nav-grid-item">
            <a href="contactus.html">Contact Us</a>
          </div>
          <div class="nav-grid-item test">
            <a href="login.html">Log-In</a>
          </div>
          <div class="nav-grid-item right-imgs">
              <img src="images/footerlogo.png" alt="">
          </div>
      </div>
    </nav>
      </header>
    <section class="main-section">
      <h1>Welcome to On-Demand Logistics!</h1>
      <div class="grid-container-even">
        <div class="grid-item grid-item-1">
          <h2>
            We are a 3PL (third party logistics) and consulting company
          </h2>
        </div>
        <div class="grid-item grid-item-2">
          <img src="images/openmap.jpg" width=400px hieght=1000px alt="This is the open globe image">
        </div>
        <div class="grid-item grid-item-3">
...

任何帮助,将不胜感激

谢谢!

小吉弗

4

1 回答 1

1

您选择的元素是div. 你想点击里面的锚标签-

element = WebDriverWait(driver, 10).until(
    ec.element_to_be_clickable((By.CSS_SELECTOR, ".test > a"))
)
element.click()

css 选择器.test > a只是意味着选择作为a具有 class name 元素的子元素的标记test

有时,selenium 无法注册对嵌套元素的点击。这里似乎就是这种情况。在这种情况下,您可以click像这样启动 from javascript -

driver.execute_script("arguments[0].click()", element)

或者您可以简单地hrefa标签中获取并.get手动执行 -

driver.get(element.get_attribute('href'))
于 2020-11-08T14:13:09.957 回答