如何使用 Selenium Webdriver 和 Python 单击选项卡按钮

http://img3.mukewang.com/629870980001038407580193.jpg

我将单击红色圆圈中的那个按钮。

我想抓取那个网站。我如何编写python代码?


我试过这段代码


from bs4 import BeautifulSoup

from urllib.request import urlopen

import time

from selenium import webdriver 

driver = webdriver.Chrome('./chromedriver.exe')

url_base = 'https://www.kebhana.com/cont/mall/mall08/mall0805/index.jsp?_menuNo=62608'

driver.implicitly_wait(5)


driver.get(url_base)

openElement = driver.findElement(By.linkText("li[2]")).click(); 



time.sleep(2)


openElement.click()

time.sleep(5)



driver.quit()

soup

错误消息显示如下:


AttributeError                            Traceback (most recent call last)

<ipython-input-16-19b58965022a> in <module>()

      8 

      9 driver.get(url_base)

---> 10 openElement = driver.findElement(By.linkText("li[2]")).click();

     11 

     12 


AttributeError: 'WebDriver' object has no attribute 'findElement'

该按钮的html代码是


<li class="on">

   <a href="#none" onclick="javascript:doTab('spb_2812');">

      <span>적 금</span>

   </a>

</li>


莫回无
浏览 217回答 3
3回答

翻阅古今

你需要注意几件事:当您使用Selenium-Python客户端时,findElement()这不是有效的代码行。相反,您需要使用以下任一方法:find_element_by_xpath()find_element_by_css_selector()linkText仅接受文本。诱导time.sleep(5)会降低测试执行的性能。解决方案要click()在带有文本的元素上作为적 금,您必须诱导WebDriverWait并且element_to_be_clickable()您可以使用以下任一Locator Strategies:CSS_SELECTOR:WebDriverWait(driver,&nbsp;20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,&nbsp;"ul.productSearchDiv&nbsp;li:nth-child(2)&nbsp;>a>span"))).click()XPATH:WebDriverWait(driver,&nbsp;20).until(EC.element_to_be_clickable((By.XPATH,&nbsp;"//ul[@class='productSearchDiv&nbsp;']//li/a/span[text()='적&nbsp;금']"))).click()注意:您必须添加以下导入:from&nbsp;selenium.webdriver.support.ui&nbsp;import&nbsp;WebDriverWait from&nbsp;selenium.webdriver.common.by&nbsp;import&nbsp;By from&nbsp;selenium.webdriver.support&nbsp;import&nbsp;expected_conditions&nbsp;as&nbsp;EC浏览器快照:

牛魔王的故事

findElement是 Java 语法,而不是 Python。此外,li是一个标签,而不是文本,并且无论如何by_link_text都不适用于标签。<span>xpath改为使用driver.find_element_by_xpath('//li[.//span[.="적&nbsp;금"]]')

千巷猫影

要单击选项卡,您需要在 xapth 下方诱导和使用WebDriverWait。element_to_be_clickable()from selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium import webdriverdriver=webdriver.Chrome('./chromedriver.exe')driver.get("https://www.kebhana.com/cont/mall/mall08/mall0805/index.jsp?_menuNo=62608")WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='productSDiv']//li//a[contains(@onclick,'spb_2812')]"))).click()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python