การเขียน selenium webdriver ด้วยภาษา python

แนะนำ สอบถาม ภาษา C สำหรับผู้เริ่มต้น ภาษา Java ภาษา Python

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 16631
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: การเขียน selenium webdriver ด้วยภาษา python

โพสต์โดย mindphp » 14/09/2017 7:12 pm

ลองดูตามโค้ดนี้

โค้ด: เลือกทั้งหมด

        driver.find_element_by_xpath("//input[@name=\"post\"]").click()
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: viewforum.php?f=29
รับอบรม และพัฒนาระบบ: viewtopic.php?f=6&t=2042

natnicha001
PHP Hero Member
PHP Hero Member
โพสต์: 119
ลงทะเบียนเมื่อ: 28/08/2017 10:14 am

Re: การเขียน selenium webdriver ด้วยภาษา python

โพสต์โดย natnicha001 » 15/09/2017 9:12 am

จากการใช้

โค้ด: เลือกทั้งหมด

driver.find_element_by_xpath("//input[@name=\"post\"]").click()


มี error ดังนี้

โค้ด: เลือกทั้งหมด

Traceback (most recent call last):
  File "/home/com010/m050/test2.py", line 37, in <module>
    driver.find_element_by_xpath("//input[@name=\"post\"]").click()
  File "/home/com010/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 77, in click
    self._execute(Command.CLICK_ELEMENT)
  File "/home/com010/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 493, in _execute
    return self._parent.execute(command, params)
  File "/home/com010/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 256, in execute
    self.error_handler.check_response(response)
  File "/home/com010/.local/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotVisibleException: Message: element not visible
  (Session info: chrome=61.0.3163.79)
  (Driver info: chromedriver=2.30.477691 (6ee44a7247c639c0703f291d320bdf05c1531b57),platform=Linux 4.10.0-33-generic x86_64)

ภาพประจำตัวสมาชิก
nuattawoot
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 642
ลงทะเบียนเมื่อ: 05/06/2017 9:34 am

Re: การเขียน selenium webdriver ด้วยภาษา python

โพสต์โดย nuattawoot » 15/09/2017 10:29 am

ผมใช้โค้ดนี้ก้คลิกได้ ปกตินะ ลองใหม่ครับ

โค้ด: เลือกทั้งหมด

browser.find_element_by_name("post").click()


อันนีคลิกจาก link_text ไม่แนะนำ

โค้ด: เลือกทั้งหมด

browser.find_element_by_link_text(u"โพสต์").click()


ถ้าไม่ได้ให้ลองไปใช้ webdriver.Firefox ครับ

natnicha001
PHP Hero Member
PHP Hero Member
โพสต์: 119
ลงทะเบียนเมื่อ: 28/08/2017 10:14 am

Re: การเขียน selenium webdriver ด้วยภาษา python

โพสต์โดย natnicha001 » 15/09/2017 10:41 am

จากการใช้

โค้ด: เลือกทั้งหมด

driver.find_element_by_name("post").click()


error

โค้ด: เลือกทั้งหมด

Traceback (most recent call last):
  File "/home/com010/m050/test2.py", line 37, in <module>
    driver.find_element_by_name("post").click()
  File "/home/com010/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 77, in click
    self._execute(Command.CLICK_ELEMENT)
  File "/home/com010/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 493, in _execute
    return self._parent.execute(command, params)
  File "/home/com010/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 256, in execute
    self.error_handler.check_response(response)
  File "/home/com010/.local/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotVisibleException: Message: element not visible
  (Session info: chrome=61.0.3163.79)
  (Driver info: chromedriver=2.30.477691 (6ee44a7247c639c0703f291d320bdf05c1531b57),platform=Linux 4.10.0-33-generic x86_64)



จากการใช้

โค้ด: เลือกทั้งหมด

driver.find_element_by_link_text(u"โพสต์").click()


error

โค้ด: เลือกทั้งหมด

Traceback (most recent call last):
  File "/home/com010/m050/test2.py", line 37, in <module>
    driver.find_element_by_link_text(u"โพสต์").click()
  File "/home/com010/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 77, in click
    self._execute(Command.CLICK_ELEMENT)
  File "/home/com010/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 493, in _execute
    return self._parent.execute(command, params)
  File "/home/com010/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 256, in execute
    self.error_handler.check_response(response)
  File "/home/com010/.local/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Element is not clickable at point (973, 936)
  (Session info: chrome=61.0.3163.79)
  (Driver info: chromedriver=2.30.477691 (6ee44a7247c639c0703f291d320bdf05c1531b57),platform=Linux 4.10.0-33-generic x86_64)



ไม่สามารถเปิดด้วย firefox

error

โค้ด: เลือกทั้งหมด

Traceback (most recent call last):
  File "/home/com010/m050/test3.py", line 2, in <module>
    driver = webdriver.Firefox()
  File "/home/com010/.local/lib/python2.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 142, in __init__
    self.service.start()
  File "/home/com010/.local/lib/python2.7/site-packages/selenium/webdriver/common/service.py", line 81, in start
    os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 16631
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: การเขียน selenium webdriver ด้วยภาษา python

โพสต์โดย mindphp » 15/09/2017 11:47 am

natnicha001 เขียน:จากการใช้

โค้ด: เลือกทั้งหมด

driver.find_element_by_xpath("//input[@name=\"post\"]").click()


มี error ดังนี้

โค้ด: เลือกทั้งหมด

Traceback (most recent call last):
  File "/home/com010/m050/test2.py", line 37, in <module>
    driver.find_element_by_xpath("//input[@name=\"post\"]").click()
  File "/home/com010/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 77, in click
    self._execute(Command.CLICK_ELEMENT)
  File "/home/com010/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 493, in _execute
    return self._parent.execute(command, params)
  File "/home/com010/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 256, in execute
    self.error_handler.check_response(response)
  File "/home/com010/.local/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotVisibleException: Message: element not visible
  (Session info: chrome=61.0.3163.79)
  (Driver info: chromedriver=2.30.477691 (6ee44a7247c639c0703f291d320bdf05c1531b57),platform=Linux 4.10.0-33-generic x86_64)

ตาม Error
มันบอกว่า ว่า element not visible แปลว่ายังมองไม่เห็น element นั้น
ปัญหาอาจเป็นเพราะ หน้าที่เราต้องการให้ selenium หา element ยังโหลดหน้านั้นมายังไม่เสร็จ
ทางแก้ให้ลอง ทำดังนี้
ตอนคลิกลิงค์ก่อนมาคำสั่งนี้ ให้ใส่ตัวหน่วงเวลาเข้าไปก่อน

ศึกษาเพิ่มเติมการใช้งาน

driver.implicitly_wait(30)
หรือ
time.sleep(1)

และ is_element_present เพื่อช่วยลดข้อผิดพลาด ก่อนใช้คำสั่ง find_element_by_xxx
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: viewforum.php?f=29
รับอบรม และพัฒนาระบบ: viewtopic.php?f=6&t=2042

natnicha001
PHP Hero Member
PHP Hero Member
โพสต์: 119
ลงทะเบียนเมื่อ: 28/08/2017 10:14 am

Re: การเขียน selenium webdriver ด้วยภาษา python

โพสต์โดย natnicha001 » 16/09/2017 10:20 am

จากการใช้ is_element_present ซึ่งหนูไม่แน่ใจว่าเขียนรูปแบบถูกหรือไม่ หรือแทนตัวแปรถูกไหม

โค้ด: เลือกทั้งหมด

time.sleep(5)
driver.assertTrue(driver.is_element_present(By.NAME, "post"))


error ที่เกิดขึ้น

โค้ด: เลือกทั้งหมด

Traceback (most recent call last):
  File "/home/com010/m050/test2.py", line 39, in <module>
    driver.assertTrue(driver.is_element_present(By.NAME, "post"))
AttributeError: 'WebDriver' object has no attribute 'assertTrue'

ภาพประจำตัวสมาชิก
thatsawan
PHP VIP Members
PHP VIP Members
โพสต์: 9536
ลงทะเบียนเมื่อ: 31/03/2014 10:02 am
ติดต่อ:

Re: การเขียน selenium webdriver ด้วยภาษา python

โพสต์โดย thatsawan » 16/09/2017 3:34 pm

error มันบอกว่า driver.assertTrue ใช้ไม่ได้

natnicha001
PHP Hero Member
PHP Hero Member
โพสต์: 119
ลงทะเบียนเมื่อ: 28/08/2017 10:14 am

Re: การเขียน selenium webdriver ด้วยภาษา python

โพสต์โดย natnicha001 » 16/09/2017 3:47 pm

ขอโทษค่ะ แต่ไม่เข้าใจจริง ๆ ว่าถ้ามันใช้ไม่ได้แล้วเราควรทำไงคะ แล้วคำว่า assertTrue เป็นรูปแบบการเขียนที่ตายตัว หรือเป็นตัวแปลที่เปลี่ยนไปตาม code ของเราคะ ขอโทษค่ะ ไม่เข้าใจจริง ๆ


ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 5 และ บุคคลทั่วไป 0 ท่าน